如何在字符串中使用正则表达式中的单个字符?

时间:2016-07-14 12:17:00

标签: java regex string-matching

我有以下字符串:

LoopStep(i,0,m-1,1) 

我想使用正则表达式,这样我就能找到第一个"(",例如我的正则表达式代码是:\\([^)]*\\)。我想检查第一个打开的括号所以我对这段代码没有问题:

LoopStep ((i,0,m-1,1)).

2 个答案:

答案 0 :(得分:1)

如果想检查您的String是否包含两个连续的括号,则可以使用indexOfcontains代替正则表达式:

// will return true only if the String doesn't contain ((
// you can also use to infer actual index
test.indexOf("((") == -1
// same and better but you can't use the index
!test.contains("((")

请注意,test是您所需的String变量,例如值"LoopStep(i,0,m-1,1)"

如果您实际上正在解析语法(似乎是这种情况),请不要使用正则表达式。

您可能需要构建自己的解析器,以验证和解析元语言的语法。

注意

只是为了让您瞥一眼在这种情况下使用正则表达式验证语法时可能遇到的问题,这里有一个匹配整个String的正则表达式示例来检查连续的括号({{ 1}}):

"(("

答案 1 :(得分:-1)

您可以使用问号。如果将其添加到正则表达式,它将变得非贪婪。例如,模式"("将匹配所有打开的括号,同时"(?"仅匹配第一次出现。