regex 在开头或空格后匹配,带方括号,r'[^\s]+word' [duplicate]

dtcbnfnu  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(131)
    • 此问题在此处已有答案**:

Regex: Specify "space or start of string" and "space or end of string"(4个答案)
Regex whitespace word boundary(3个答案)
13小时前关门了。
这三个都不匹配

m = re.search(r'[^\s]+ss', "aa ss")
m = re.search(r'[^\s]+ss', "ss")
m = re.search(r'[^\s]+ss', " ss")

但这个和

m = re.search(r'[\s^]+ss', " ss")

在字符串的开头或一个或多个空格之后匹配单词"ss"的通常方法是什么?

  • --修改---
    r'\bss'是一个很好的解决方案,至少在我的情况下是这样。但是我想知道为什么方括号的不起作用,下面的@TedLyngmo回答了这个问题。
myzjeezk

myzjeezk1#

如果我没理解错的话,可以使用|匹配行首的 * 或 * 空格:

(?:^|\s)ss
  • (?:-非捕获组的开始
  • ^|\s-匹配行首或空白
  • )-非捕获基团末端
  • ss-匹配文字ss

Demo
在您的尝试中:

  • [^\s]将精确匹配 * 一个 * 非空白字符。[^...]使字符组取反,以便不允许该组中的任何字符。
  • [\s^]将精确匹配 * 一个 * 字符,该字符可以是空格或文字^(不是字符串的开头)。

相关问题