在比赛结束时不会包含空格的正则表达式

时间:2016-03-23 17:04:16

标签: regex

我正在尝试编写类似于以下内容的正则表达式:

(PART 1)?\s*(PART 2)?\s*(PART 3)?

第1,2和3部分可能存在也可能不存在,并且可能会或可能不会被空格分隔。上述几乎是有效的,但如果最后的部分不存在,它会在比赛结束时拉出一个空间。例如,它将在以下匹配中拉出一个空格(我已添加箭头以显示匹配的开始和结束):

-->(PART 1) (PART 2) <--(PART 4)

如何阻止它这样做?我尝试使用前瞻,但我只能弄清楚如何防止在行尾的空间,而不是匹配的结束。我也尝试在空格上使用惰性限定符,但是它不会拉出后续部分。

1 个答案:

答案 0 :(得分:2)

试试这个RegEx:

(PART 1)?(\s*PART 2)?(\s*PART 3)?

Live Demo on Regex101

工作原理:

(PART 1)?       # Selects PART 1
(\s*PART 2)?    # Selects Whitespace then PART 2
(\s*PART 3)?    # Selects Whitespace then PART 3

基本上,如果它继续下一部分

,它将只选择空白