我正在尝试匹配连续3个空格中的中间空格。我只想匹配中间的空格,但前提是它必须位于|之前。我需要匹配的实际文本是:
|
--- --- --- | | | | --- --- ---
我可以将|前面的行中的2个空格与(?<!\|)\s{2}匹配(x表示匹配),但我只想匹配中间的x
(?<!\|)\s{2}
x
--- --- --- | xx| xx| xx| --- --- ---
1l5u6lss1#
如果你试图分割字符串,并使用白色作为分隔符,得到中间的子字符串,然后将其与正则表达式模式匹配,会怎么样?
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 101:demo
***group(0)**从头到尾匹配整个模式。| | | |*group(1)匹配模式在感兴趣的空格之前***group(2)**匹配感兴趣的空白*group(3)匹配模式在感兴趣的空格之后
| | | |
2条答案
按热度按时间1l5u6lss1#
如果你试图分割字符串,并使用白色作为分隔符,得到中间的子字符串,然后将其与正则表达式模式匹配,会怎么样?
rekjcdws2#
您可以使用grouping来取得这些特定的空格:
粗体部分与您需要的空间相关:
(|\s{3}|(\s{2})(|\s{3}|)
代码:
下面是一个regex 101:demo
***group(0)**从头到尾匹配整个模式。
| | | |
*group(1)匹配模式在感兴趣的空格之前
***group(2)**匹配感兴趣的空白
*group(3)匹配模式在感兴趣的空格之后