哪个正则表达式适用于数字和字符串?

2024-01-12

我正在尝试创建简单的 IDE 并根据以下内容为我的 JTextPane 着色

  • 字符串(“”)
  • 注释(// 和 /* */)
  • 关键字(公共、int ...)
  • 数字(整数,如 69,浮点数,如 1.5)

我为源代码着色的方式是覆盖 StyledDocument 中的 insertString 和 removeString 方法。

经过多次测试,我已经完成了评论和关键字。

Q1:对于我的字符串着色,我根据以下正则表达式为字符串着色:

Pattern strings = Pattern.compile("\"[^\"]*\"");
Matcher matcherS = strings.matcher(text);

while (matcherS.find()) {
    setCharacterAttributes(matcherS.start(), matcherS.end() - matcherS.start(), red, false);
}

这在 99% 的情况下都有效,除非我的字符串包含特定类型的字符串,其中代码内有一个“\”。这会弄乱我的整个颜色编码。 任何人都可以更正我的正则表达式来修复我的错误吗?

Q2:对于整数和小数着色,根据以下正则表达式检测数字:

Pattern numbers = Pattern.compile("\\d+");
Matcher matcherN = numbers.matcher(text);
while (matcherN.find()) {
    setCharacterAttributes(matcherN.start(), matcherN.end() - matcherN.start(), magenta, false);
}

通过使用正则表达式“\d+”,我只处理整数而不处理浮点数。另外,作为另一个字符串一部分的整数会被匹配,这不是我在 IDE 中想要的。用于整数颜色编码的正确表达式是什么?

Below is a screenshot of the output: enter image description here

感谢您提前提供的任何帮助!


对于字符串,这可能是最快的正则表达式 -

"\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\""

格式化:

 " [^"\\]* 
 (?: \\ . [^"\\]* )*
 "

对于整数和小数,我所知道的唯一万无一失的表达式是
这 -

"(?:\\d+(?:\\.\\d*)?|\\.\\d+)"

格式化:

 (?:
      \d+ 
      (?: \. \d* )?
   |  \. \d+ 
 )

作为旁注,如果你从一开始就独立地做每件事
您可能会重叠突出显示的字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪个正则表达式适用于数字和字符串? 的相关文章

  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 正则表达式匹配bash变量

    我正在尝试修改 bash 脚本 当前脚本包含 print div class 1 div Where 1可能看起来像 Apprentice Historian Level 1 Historian Level 4 Master Histori
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • 删除按钮处于活动状态(单击)时的阴影

    我有这个 CSS 用于按钮动画和其他 btnliner background url images btnbg png no repeat center 105px Fallback display block text align cen
  • 如何用C#模拟浏览器HTTP POST请求并捕获结果

    假设我们有一个带有搜索输入表单的网页 它通过 HTTP GET 将数据提交到服务器 这意味着服务器通过查询字符串接收搜索数据 用户可以看到 URL 也可以自己初始化此请求 通过 URL 查询字符串 我们都知道 这是问题所在 如果这个网页通过
  • Javascript:显示带有复选框值的图像

    我目前正在使用单选按钮和复选框来在 javascript 的帮助下显示图像 具体来说 我在处理复选框和显示图像时遇到问题 使用单选按钮时 只会显示该类别的一张图像 但对于复选框 需要显示多个图像 例如 用户可以检查夹克和手套的字段 并且将显
  • 如何在node.js中使用CasperJS?

    我想在node js 中使用CasperJS 我参考了以下 URL 在 node js 中使用 CasperJS https github com sgentle phantomjs node https github com sgentl
  • Angular Js:类属性指令中的 onchange 不起作用

    控制指令 js function validVehicleyear scope http return restrict C scope ngModel link function scope element attrs ngModel e
  • 在 Docker 中启动并填充 Postgres 容器

    我有一个包含 Postgres 数据库的 Docker 容器 这是用官方的Postgres 图像 https registry hub docker com postgres 其中有一个 CMD 条目在主线程上启动服务器 我想通过运行来填充
  • xcode 8 错误被服务委托拒绝 (SBMainWorkspace)

    尝试在模拟器上运行构建 我收到此错误 打开 com companyname appname 的请求失败 请求被服务委托 SBMainWorkspace 拒绝 原因 安全 权利 启动需要 com apple frontboard debuga
  • 如何传递通用方法的 lambda 表达式参数以检查 MVC EF 4.0 中的重复项

    我的应用程序中有超过 10 个设置屏幕 在每个数据中 我都必须检查重复数据 例如 这是一个示例代码 private void CheckDuplication AIRLINE airline var AIRLINE context AIRL
  • React Native 不会填满 iPad 上的窗口

    我正在运行的任何 React Native 项目 包括 Facebook 的示例 在 iPad 上看起来都很奇怪 它没有填满屏幕 一切看起来 太大 内容左右各有2个黑条 任何帮助都会很棒 谢谢 解决方案 在 xcode 项目中 转到常规选项
  • 使用javascript获取具有多个下拉菜单的选项的选定值

    我有多个功能 其中有多个选项 在选择某个选项时需要更新这些选项 我还需要通过属性元素传递第三条数据 getElementById 适用于单个下拉菜单 但是当页面上有多个菜单时如何使其工作 我努力了var e document getElem
  • jQuery stop(true, true) 跳转到队列中所有动画的末尾

    我一直在使用 jQuerystop true true 方法清除正在运行的动画 以便下一个立即开始 我注意到第一个参数 clearQueue 清除整个动画队列 但第二个参数 jumpToEnd 仅跳转到当前正在运行的动画的末尾 而不是从队列
  • 如何静音AVPlayer中播放的视频?

    我正在 AVPlayer 中播放视频 现在我需要在播放时单独静音音频 请建议如何在 Objective C 中进行操作 谢谢 苏雷什 从iOS7开始你可以设置AVPlayerisMuted财产给true 在 Objective C 中 该属
  • 在 Entity Framework 4.1 Code First 中排除列可更新

    有谁知道我们是否可以在 Entity Framework 4 1 Code First 中排除列的更新 例如 我有 CreatedOn 字段 我不想在进行编辑 更新时包含该字段 这是否可能 即有选择地从 EF Code First 4 1
  • Java Swing:GUI 未更新某些属性

    编辑 下面是一个最简单 最简单且可检查的问题 RESUME 我正在做一个拉丁方应用程序 它设置一个大小为 s 的正方形 并且您需要使用一些限制来为其着色 例如同一行或同一列中的颜色不同 但我的麻烦不是问题本身 而是Swing 我正在尝试使用
  • 求矩阵中不同行和列的元素总和的最大值

    我有一个 nxm 矩阵 我需要找到不同行和列中其值之和的最大值 例如考虑以下矩阵 m1 m2 m3 n1 1 2 3 n2 4 5 6 n3 7 8 9 n4 10 11 12 最大值为 12 8 4 24 请注意 查找最大值并消除属于该列
  • 检查断言是否启用

    您可以启用 禁用assert on the ClassLoader http docs oracle com cd E19683 01 806 7930 assert 5 index html 但如何确定它们是否已启用 我想采用一些代码路径
  • 避免Python中的对象别名?

    我正在尝试编写一个函数来检查列表是否已排序 返回True or False 如何避免多个变量指向同一事物 def is sorted t a t a sort 当我这样做时 它会对两者进行排序a and t 我怎样才能避免这种情况 这是 O
  • 使用电子构建器的构建后脚本

    在使用电子构建器打包安装程序之前 是否可以在构建后运行某种脚本 我需要生成一个应该分发的额外文件 但我需要二进制文件 exe 来生成它 None
  • 从外部模块添加 argparse 参数

    我正在尝试编写一个可以由第三方扩展的Python程序 该程序将从命令行运行 并提供任何参数 为了允许第三方创建自己的模块 我创建了以下 简化的 基类 class MyBaseClass object def init self self d
  • 哪个正则表达式适用于数字和字符串?

    我正在尝试创建简单的 IDE 并根据以下内容为我的 JTextPane 着色 字符串 注释 和 关键字 公共 int 数字 整数 如 69 浮点数 如 1 5 我为源代码着色的方式是覆盖 StyledDocument 中的 insertSt