我有一个像这样形成的输入:
1. [可变长度空白] [aaa] [bbb] [ccc]名称[01] [ - ] [可变长度的附加名称] [endword1] [endword2]
[]
中的所有内容都是可选的,但aaa
bbb
ccc
和endword1
以及endword2
是固定关键字。第一个数字是从0
到n
的计数器,第二个数字有两个数字[0-9][0-9]
(如果存在)。
我可以匹配所有内容,但最后两个单词,有时(它们不是必需的)结束了这一行:
[0-9]*\.[^\S\r\n]{1,}(\baaa\b)?[^\S\r\n]*(\bbbb\b)?[^\S\r\n]{1,}?(\bccc\b)?[^\S\r\n]{1,}[A-Za-z0-9\s]*(\-)?[^\S\r\n]{1,}[A-Za-z0-9\s]*
那么我如何检查我的最后两个结束语?
另外:我不知道有效的第一部分是否是一个好的正则表达式;因此,如果您认为有更好/更清洁的东西,请随意改进它。
答案 0 :(得分:2)
您可以使用以下内容:
^\d*\.\h+(\baaa\b)?\h*(\bbbb\b)?\h*(\bccc\b)?\h*[A-Za-z0-9\s]*(\-)?\h+[A-Za-z0-9\s]*?(\bendword1\b)?\h*(\bendword2\b)?$
[^\S\r\n]
已替换为\h
(可变长度的水平空格)请参阅DEMO