My Regex:
\@((TIME|NOW|TODAY)\(.*?\)\s+[0-2]?[0-9]:[0-5][0-9]:[0-5][0-9])
我的字符串:
@Time blah blah @TIME(1d) blah @NOW(12312) 12:32:25 blah @TODAY(12312) 12:32:25
我期望匹配:
@NOW(12312) 12:32:25
答案 0 :(得分:1)
使用否定的字符类而不是.*
:
@((TIME|NOW|TODAY)\([^@]*?\)\s+[0-2]?[0-9]:[0-5][0-9]:[0-5][0-9])
[^@]*
将匹配任何不是@
的字符中的0个或更多字符,因此不匹配以@
开头的任何其他字符串。
如果您的匹配字符串中可能有@
,那么您可以使用基于负前瞻的正则表达式:
@((?:TIME|NOW|TODAY)\((?:(?!@(?:TIME|NOW|TODAY)).)*\)\s+[0-2]?[0-9]:[0-5][0-9]:[0-5][0-9])