我正在尝试编写类似于以下内容的正则表达式:
(PART 1)?\s*(PART 2)?\s*(PART 3)?
第1,2和3部分可能存在也可能不存在,并且可能会或可能不会被空格分隔。上述几乎是有效的,但如果最后的部分不存在,它会在比赛结束时拉出一个空间。例如,它将在以下匹配中拉出一个空格(我已添加箭头以显示匹配的开始和结束):
-->(PART 1) (PART 2) <--(PART 4)
如何阻止它这样做?我尝试使用前瞻,但我只能弄清楚如何防止在行尾的空间,而不是匹配的结束。我也尝试在空格上使用惰性限定符,但是它不会拉出后续部分。
答案 0 :(得分:2)
试试这个RegEx:
(PART 1)?(\s*PART 2)?(\s*PART 3)?
工作原理:
(PART 1)? # Selects PART 1
(\s*PART 2)? # Selects Whitespace then PART 2
(\s*PART 3)? # Selects Whitespace then PART 3
基本上,如果它继续下一部分
,它将只选择空白