【发布时间】:2018-05-10 03:40:28
【问题描述】:
我有两个字符串,如下所示:
6015603 06/12/2017 06/12/2017 02:45:28 PM - BIL/001347764403/LOAN/NSP CR 20,000.00 8,381.002 S 6156702 06/12/2017 06/12/2017
6015603 06/12/2017 06/12/2017 - BIL/001347764403/LOAN/NSP CR 20,000.00 8,381.002 S 6156702 06/12/2017 06/12/2017
以及如下的正则表达式:
[0-9]+\s+[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}\s+[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}\s*(?![0-9]{2}[:][0-9]{2}[:][0-9]{2}\s*(AM|PM)).*?(?=([0-9]+\s*[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}+\s+[0-9]{2}[\/][0-9]{2}[\/][0-9]{4})|\\Z)
如你所见,我使用负面展望来避免时间
(?![0-9]{2}[:][0-9]{2}[:][0-9]{2}\s*(AM|PM))
但是当我运行模式匹配时,两个字符串都匹配。我希望忽略第一个字符串。我在做什么错了?
【问题讨论】:
-
您的语言是否转义了反斜杠?你想要一个字符串文字。或者每次你想要一个正则表达式时使用双反斜杠
-
好吧,我正在使用 java。我只是让它在一般的正则表达式中呈现出来,而不管任何语言。在我的代码中,我使用了转义字符,例如 \s+ 显然是 \\s+
标签: regex pattern-matching negative-lookahead