选择之前的所有内容和或者如果没有&

时间:2017-07-21 09:02:37

标签: regex

我想用正则表达式来分割一些文字。

我的文字: 您好:功放;世界 你好 0011安培;世界 0011

使用(.*)(\&.*)仅匹配“Hello& World”和“0011& World”,(.*)(\&.*)?忽略最后一部分。

对于前2个我想要'你好'而最后2个我想得到'0011'

谢谢

1 个答案:

答案 0 :(得分:2)

似乎你需要获取除&之外的0+字符。在字符串的开头。

使用以下正则表达式:

^[^&]*

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • [^&]* - negated character class匹配零个或多个(*)个字符而不是&(以匹配1个或多个*替换{{1} }})。

请参阅Python demo

+

请注意,re.match仅在字符串的开头查找匹配项,从而使模式中的import re ss = ['Hello&World','Hello','0011&World','0011'] for s in ss: print(re.match('[^&]*', s).group()) # print(re.search('^[^&]*', s).group()) 成为冗余。

否则,如果您使用re.search,则必须使用^锚点将搜索锚定在字符串的开头。