在regex中最多匹配一个换行符的空格

fcwjkofz  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(309)

如果ab之间只有最多一个换行符的空白,我想匹配a b
Python示例:

import re

r = "a\s*b"  # ?

# should match:
print(re.match(r, "ab"))
print(re.match(r, "a   b"))
print(re.match(r, "a \n b"))

# shouldn't match:
print(re.match(r, "a\n\nb"))
print(re.match(r, "a    \n\n  b"))
zbq4xfa0

zbq4xfa01#

您需要从\s中排除一个换行符,然后可选地将一个换行符与任何零个或多个空格字符匹配,而不是一个换行符:

a[^\S\n]*(?:\n[^\S\n]*)?b

参见regex demo

  • 详情 *:
  • a-a字母
  • [^\S\n]*-零个或多个除换行符以外的空格字符
  • (?:\n[^\S\n]*)?-出现一次或零次
  • \n-换行符
  • [^\S\n]*-零个或多个除换行符以外的空格字符
  • b-一个b字母。
gmxoilav

gmxoilav2#

你可以使用这个regex:

a *(?:\n *)?b

RegEx Demo

RegEx详情:

  • a:匹配a
  • *:匹配0个或多个空格
  • (?:\n *)?:* 可选 * 匹配一个换行符,后跟0个或多个空格
  • b:匹配b

在线代码演示

相关问题