regex 选择匹配字符后的第二个空格的正则表达式

ehxuflar  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(217)

我正在尝试匹配连续3个空格中的中间空格。
我只想匹配中间的空格,但前提是它必须位于|之前。我需要匹配的实际文本是:

--- --- ---
|   |   |   |
 --- --- ---

我可以将|前面的行中的2个空格与(?<!\|)\s{2}匹配(x表示匹配),但我只想匹配中间的x

--- --- ---
| xx| xx| xx|
 --- --- ---
1l5u6lss

1l5u6lss1#

如果你试图分割字符串,并使用白色作为分隔符,得到中间的子字符串,然后将其与正则表达式模式匹配,会怎么样?

rekjcdws

rekjcdws2#

您可以使用grouping来取得这些特定的空格:

粗体部分与您需要的空间相关:

(|\s{3}|(\s{2})(|\s{3}|)

代码:

import re

text = """
 --- --- ---
|   |   |   |
 --- --- ---
 """
 
pattern = re.compile(r"(\|\s{3}\|\s)(\s{2})(\|\s{3}\|)")

match = pattern.search(text)
print(match.group(2))

下面是一个regex 101demo

***group(0)**从头到尾匹配整个模式。| | | |
*group(1)匹配模式感兴趣的空格之前
***group(2)**匹配感兴趣的空白
*group(3)匹配模式感兴趣的空格之后

相关问题