首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Regex检测注释/字符串,不发生冲突,方法名称,类名

Regex检测注释/字符串,不发生冲突,方法名称,类名
EN

Stack Overflow用户
提问于 2015-08-14 15:33:05
回答 2查看 225关注 0票数 1

我正在创建一个简单的IDE。

这是通过使用regex检测代码类型并在JTextPane中对它们着色来完成的。

目前,我可以发现:

  • 评论
  • 字符串文字
  • 数字
  • 关键字/限制词

下面是我的程序示例:

问题1:我的正则表达式检测字符串文字,然后是注释。因此,它覆盖了它的颜色,导致字符串中的注释被不正确地着色。

这是用于检测注释的正则表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Pattern commentsSingle = Pattern.compile("\\/\\/.*");
Pattern commentsMulti = Pattern.compile("\\/\\*.*?\\*\\/", Pattern.DOTALL);

这是用于检测字符串文字的regex:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Pattern strings = Pattern.compile("((?<!\\\\)\\\"(.*?)\\\"(?<!\\\\\\\"))");

是否有一种方式使我的注释regex不会检测到字符串文本(“”双引号)

或者也许

不会检测到内部注释的字符串。

问题2:我希望检测方法名(用户创建的),并将它们着色为不同的颜色.

是否有可以检测方法名称的正则表达式?

问题3:就像Q2一样,我希望检测类名并给它们涂上不同的颜色。

是否有可以检测类名的正则表达式?

--

很抱歉,我的长期职位,我是相对较新的regex和任何帮助,将非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2015-08-14 15:43:52

专业提示:你做错了。

编程语言中有太多复杂的结构,无法用regex来解释。即使语言相当简单,正则表达式也会很快变得过于笨重,无法维护和更新。不仅如此,正则表达式也很快开始在大型数据集中缓慢运行。

你最好的选择是词法/解析

您将能够相当快地标记代码的各个部分,并能够支持多种语言。

票数 1
EN

Stack Overflow用户

发布于 2015-08-15 09:22:09

iismathwizard是正确的,解析器会更好,但我认为作为regex练习,这是个不错的主意。但是,您可以尝试这样做:

  • 方法:[\w$]+(?=\([^)]*\)\s*\{) 演示
  • Java类:(?<=class\s{0,1000})([\w$]+)(?=(?:\s*(?:implements|extends)\s*(?:[\w$]+))?\s*\{)修改的演示
  • 注释,按类型分组:^(?:\s*?)(?:[^"\n\r]*?(?:"[^"]+?")?[^"\n\r]*?)?(?:(?<endOfLine>//[^\n]*)|(?<javadoc>/\*\*(?:.|\n)+?(?=\*/)\*/)|(?<block>/\*(?:.|\n)+?(?=\*/)\*/))演示

实际上,我宁愿把这个问题分成三个单独的问题,更有道理的是,有人会花一些时间回答一个问题,那就是3。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32020042

复制
相关文章
IDEA 自定义注解(类注释、方法注释)
打开File —> Settings —> Editor —> File and Code Templates —> Files —> Class
ha_lydms
2023/08/09
2.8K0
IDEA 自定义注解(类注释、方法注释)
不同程序集,名称空间类名和方法签名都一样的方法,如何调用
有时候,你可能会遇到这样的问题,不同程序集,名称空间类名和方法签名都一样的方法,如何调用。本文将介绍如何通过别名的方式来解决这个问题。
newbe36524
2023/02/21
1.4K0
不同程序集,名称空间类名和方法签名都一样的方法,如何调用
IDEA自定义设置类注释、方法注释
IDEA自定义设置类注释、方法注释 类注释 设置 -> 编辑器 -> 文件和代码模板 /** * 类名称 * Created by GMQ on ${DATE} ${TIME} * @module XX系统 */ public class ${NAME} { } 方法注释 设置 -> 编辑器 -> 代码模板 1.右上角+新建,选择第2项,如图 2.填入名称 3.选中新添加的模板,点击右上角+,选择第1项,如图填写名称、描述、注释模板 方法注释模板 * *
4xx.me
2022/06/09
5140
IDEA自定义设置类注释、方法注释
不同程序集,名称空间类名和方法签名都一样的方法,如何调用
有时候,你可能会遇到这样的问题,不同程序集,名称空间类名和方法签名都一样的方法,如何调用。本文将介绍如何通过别名的方式来解决这个问题。
newbe36524
2023/08/23
1810
CA1721:属性名不应与 get 方法冲突
成员的名称以“Get”开头,且其余部分与属性的名称匹配。 例如,包含名为“GetColor”的方法和名为“Color”的属性的类型将导致规则冲突。
呆呆
2022/02/19
3580
python文件名与包名冲突
起因 不久前,写脚本的时候遇到了这个问题,在编写jira相关脚本的时候,上头让脚本名称为jira.py,但是使用的包JIRA里也有叫jira的子项,导致冲突,需要调用的时候总是优先调用我的jira.py内容而不是调用JIRA包,导致程序出错 解决方法 import sys _cpath_ = sys.path[0] #获取当前路径 sys.path.remove(_cpath_) #删除 from jira import JIRA sys.path.insert(0, _cpath_) #恢复 sys.pa
98k
2018/04/11
1.6K0
IDEA 设置类和方法注释模板
File -> Settings -> Editor -> File and Code Templates
Remember_Ray
2020/03/08
6380
IDEA 设置类和方法注释模板
File -> Settings -> Editor -> File and Code Templates
Remember_Ray
2020/03/09
2.6K0
Java的类/方法/字段注释详解
一个程序的可读性,关键取决于注释。如果一个程序想二次开发,要读懂前面的程序代码,就必须在程序中有大量的注释文档,所以对于一个优秀的程序员来说,学会在程序中适当地添加注释是非常重要的。
JavaEdge
2020/05/26
3.2K0
根据类名的字符串实例化
假设你的源码定义了类CDemoClass,那么new CDemoClass()可以实例化CDemoClass。那么如果给你一个字符串“CDemoClass”,怎么实例化出CDemoClass呢?new "CDemoClass" 编译器就不让你通过了。
gaigai
2021/04/13
2.4K0
java方法名,类名,命名规范
Java包的名字都是由小写单词组成。即便多个单词也全小写。示例:demopackage
用户7886150
2021/04/25
2.1K0
IntelliJ IDEA设置类注释和方法注释带作者和日期
File--->Settings---->Editor---->File and Code Templates --->Includes--->File Header:
zpzp6
2023/03/23
1.4K0
Linux下检测IP地址冲突及解决方法
问题说明: 在公司办公网内的一台物理机A上安装了linux系统(ip:192.168.9.120),在上面部署了jenkins,redmine,svn程序。由于是在办公网内,这台机器和同事电脑都是在同一网段的。 突然某天问题出来了:有部分同事远程ssh登陆不上这台linux系统的机器,jenkins/redmine/svn也登陆不上,其他部分同事可以正常使用。 后来发现,是因为这台linux机器的ip被人占用了,ip地址冲突引起的!! 下面介绍下检查ip地址是否冲突的方法: ----------------
洗尽了浮华
2018/01/22
5.7K0
Linux下检测IP地址冲突及解决方法
Eclipse_常用技巧_01_自动添加类注释和方法注释
路径A=windows-->preference-->Java-->Code Style-->Code Templates-->Comments
shirayner
2018/08/10
4240
IDEA类和方法注释模板设置(非常详细)
IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。
用户7886150
2021/02/08
6460
IDEA类和方法注释模板设置(非常详细)
IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。
SmileNicky
2020/09/03
9.3K0
IDEA使用模板自动生成类注释和方法,解决方法注释在接口中或普通类的方法外使用模板注释不带参数的情况
参考: idea 自动生成类注释和方法注释的实现步骤-脚本之家 使用groovy脚本生成idea方法注释参数格式对齐
全栈程序员站长
2022/09/27
1.4K0
IDEA使用模板自动生成类注释和方法,解决方法注释在接口中或普通类的方法外使用模板注释不带参数的情况
java类名包名解释
VO:值对象、视图对象 PO:持久对象 QO:查询对象 DAO:数据访问对象——同时还有DAO模式 DTO:数据传输对象——同时还有DTO模式 PO:全称是persistant object持久对象最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。 BO:全称是business object:业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。 VO :value object值对象ViewObject表现层对象主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。 DTO :Data Transfer Object数据传输对象主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。 POJO :plain ordinary java object 简单java对象个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。一个POJO持久化以后就是PO直接用它传递、传递过程中就是DTO直接用来对应表示层就是VO DAO:data access object数据访问对象这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.主要用来封装对数据库的访问。通常和PO结合使用,DAO中包含了各种数据库的操作方法,比如对DATABASE的增删改查。它可以把POJO持久化为PO,用PO组装出来VO、DTO model:存放模型,通常是实体BEAN,也就是你业务建模分析出来的那些actor等实物类。 service:是后来网上大多数人经验总结出来,从而增加了这么一个层次,主要是为了降低耦合,面向接口、组件编程,具体的服务类,能产生实际效果和影响的类放于此。 util:utility是存放工具类相关的JAVA代码的,比如采用filter过滤器,还有一些其他的相关小工具杂类亦存放于此。
似水的流年
2019/12/07
1.2K0
点击加载更多

相似问题

如何避免css类名的名称冲突

13

名称与类方法的冲突

12

通过扩展类的名称和使用php的方法检测方法的类名?

11

C#类名-方法名冲突

22

成员函数与类名之间的名称冲突

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文