您的正则表达式实际上有问题,或者至少它使表达式以一种意想不到的方式表现(对我来说)。
表达式可以这样分解:
([a-zA-Z]+\\()| (?# matches alphabetical characters and an opening round-bracket)
((<.*?>)| (?# non-greedily matches anything between brackets)
([a-zA-Z]*))| (?# 3rd pattern: may match an empty string)
(\\))? (?# 4th pattern: optionally matches a closing round bracket)
由于|
运算符从不贪婪,因此在您实际想要的第四个模式之前触发第三个模式(匹配空字符串)。
证明这一点的是,您使用正则表达式实际获得的标记是:
''
''
''
'Action('
'<entity>'
'<entity>'
'<Asset>'
''
''
因此,您想要的可能是这样的:
([a-zA-Z]+\\()| (?# matches alphabetical characters and an opening round-bracket)
(<.*?>)| (?# non-greedily matches anything between brackets)
(\\)) (?# matches a closing round bracket)
请注意,我?
从第 4 个模式中删除了运算符,该运算符奇怪地放在括号外,并且还捕获了空字符串。