2016-01-21 80 views
1

我试图搜索,但无法找到我的案例。我需要匹配所有的字符串“第1部分”或“第2部分”等。但如果没有任何“部分x”字符串匹配所有。例如:RegEx match before string or all /从匹配项中删除字符串

  • 这里任意一个关键词第1部分
  • 任意一个关键词在这里第2部分
  • 这里

任意一个关键词应该总是返回 “这里的任何话”。我已经试过这

(.+)(?=\spart\s\d|\sPart\s\d)

但是当“第十部分”丢失不匹配。其他解决方案是从匹配中删除任何“part x”字符串。

谢谢你的帮忙!

+0

尝试'(?!(部分[0-9]))+ (部分[0-9] +)?'。 –

回答

0
^.+?(?=part\s*1|part\s*2|$) 

使用anchors OR操作,part 1part 2。看到演示。

https://regex101.com/r/cZ0sD2/5

^.+?(?=part\s*\d+|$) 
+0

我需要匹配没有“part x”字符串的回报。 –

+0

@SikySikov检查编辑 – vks

+0

谢谢 - 这一个在应用程序 '^(。+?)(?=部分([0-9] *)| $)' –

1

你可以使用这个表达式:

^(.*?)(?: part \d+)?$ 

RegEx Demo

+0

嗨,不在这里工作http://regexr.com/3ckld,不幸的是也没有在应用程序中。我正在尝试修改KODI中的刮板插件 - 请参阅http://kodi.wiki/view/RegEx_tutorial –

+0

它可以在http://regexr.com/3cklg上工作,您还需要'm'(MULTILINE)标记 – anubhava

+0

我不能标记该表达式,请参阅: ^(。*?)(?: part \ d +)?$