Java正则表达式在括号内匹配特殊字符excpet
给定以下字符串:Java正则表达式在括号内匹配特殊字符excpet,java,regex,match,Java,Regex,Match,给定以下字符串: foo().bar(norf.qux).fubar() 我想用点分开,除非它们在括号内,输出是: foo() bar(norf.qux) fubar() 这可能吗?将输入字符串按未包含在括号内的点拆分 \.(?![^()]*\)) 在Java中,表示这个正则表达式的字符串是 "\\.(?![^()]*\\))" 输出: [foo(), bar(norf.qux), fubar()] \. '.' (?!
foo().bar(norf.qux).fubar()
我想用点分开,除非它们在括号内,输出是:
foo()
bar(norf.qux)
fubar()
这可能吗?将输入字符串按未包含在括号内的点拆分
\.(?![^()]*\))
在Java中,表示这个正则表达式的字符串是
"\\.(?![^()]*\\))"
输出:
[foo(), bar(norf.qux), fubar()]
\. '.'
(?! look ahead to see if there is not:
[^()]* any character except: '(', ')' (0 or
more times)
\) ')'
) end of look-ahead
图案说明:
[foo(), bar(norf.qux), fubar()]
\. '.'
(?! look ahead to see if there is not:
[^()]* any character except: '(', ')' (0 or
more times)
\) ')'
) end of look-ahead
您可以使用如下简单的正则表达式:
\B\.
“这可能吗?”,但如果可以无限嵌套这样的表达式,则不要在此处使用正则表达式。编写自己的解析器。一个基本问题:你能嵌套括号吗?换句话说,类似于
foo().bar(norf.qux()).fubar()
或foo().bar(norf.qux(buz.whatever()).fubar()
的东西可能吗?谢谢,这是我要找的第二个表达式!您不需要在[^()]*
中查找)
,但我担心OP正在查找正则表达式,它将根据
是否不在括号内,而不是是否在之后进行拆分。在这种情况下,我们可以在(?@Pshemo是的,我同意你的观点,但我只是发布了答案,因为OP示例文本。这个简单的正则表达式适用于他的示例,可能对他有用。没关系,我不是OP,所以我无法确定你的答案是否错误。我只是发布了我的评论,以添加关于你答案假设的信息:)谢谢,也很有帮助。这适合我目前的场景,但我担心将来我会看到这个foo().bar(norf.qux).fubar().bar(norf.qux)
,输出将是foo().bar(norf.qux)fubar().bar(norf.qux)
不是预期的,但谢谢;)嗨@Lucas,谢谢你的评论。只是想让你知道,它也适用于你提到的例子