Java 正则表达式-不带特定字符串的前缀和后缀

Java 正则表达式-不带特定字符串的前缀和后缀,java,regex,Java,Regex,我希望你能帮我解决以下问题 我试图定义一个正则表达式,它表示Java中的有效注释 为此,我想要一个前缀:“/\*”+所有东西,包括新行和制表符,但不是另一个“\*/”+后缀“*/” 我试过这个:“/\*”[^“\*/”]“\*/”,但它不起作用。它将/*fdfsd*/*/作为一条有效注释 我该怎么办?你可以用 yourString.matches("/[*]((?![*]/).)*[*]/") 这将在开始时匹配/*,在结束时匹配*/。在中间,我用以测试字符(以点表示)不是 >代码> > */

我希望你能帮我解决以下问题

我试图定义一个正则表达式,它表示Java中的有效注释

为此,我想要一个前缀:
“/\*”
+所有东西,包括新行和制表符,但不是另一个
“\*/”+
后缀
“*/”

我试过这个:
“/\*”[^“\*/”]“\*/”
,但它不起作用。它将
/*fdfsd*/*/
作为一条有效注释

我该怎么办?

你可以用

yourString.matches("/[*]((?![*]/).)*[*]/")

这将在开始时匹配
/*
,在结束时匹配
*/
。在中间,我用以测试字符(以点表示)不是<代码> >代码> > <代码> */</代码>。当然,它几乎不涉及回溯,因此性能可能会得到改善,但目前它可以做到这一点。

;你试过谷歌搜索吗?你想要的功能是这里的“非贪婪”操作符(Java称之为不情愿的匹配器):如果代码中有包含
/*…*/
的字符串,比如
string s=“/*wassup*/”?您是想找到它还是应该忽略它?@Pshemo:我已经注意到一个有效的字符串了。@crownedzero:我没有在那里找到它