gpt4 book ai didi

python - 如何使用 Python 正则表达式匹配双字符异常?

转载 作者:行者123 更新时间:2023-11-28 22:48:14 24 4
gpt4 key购买 nike

得到这个字符串和正则表达式 findall:

txt = """
dx d_2,222.22 ,,
dy h..{3,333.33} ,,
dz b#(1,111.11) ,, dx-ay relative 4,444.44 ,,
"""
for n in re.findall( r'([-\w]+){1}\W+([^,{2}]+)\s+,,\W+', txt ) :
axis, value = n
print "a:", axis
print "v:", value

在第二个(值)组中,我试图匹配除双逗号之外的任何内容,但它似乎只匹配一个 ","。 .我可以在这个例子中用简单的 (.*?) 得到它但由于某些原因,它必须是除 ",," 之外的所有内容.谢谢。

编辑:要查看我想要完成的工作,只需使用 r'([-\w]+){1}\W+(.*?)\s+,,\W+'反而。它会给你这样的输出:

a: dx
v: d_2,222.22
a: dy
v: h..{3,333.33}
a: dz
v: b#(1,111.11)
a: dx-ay
v: relative 4,444.44

编辑 #2:拜托,不需要包含双逗号异常的答案。有解决办法吗。。。应该有。所以模式是:

任何空格 - 可能带有 "-" 的单词- 比" " - 和一切 ",,"除了它本身。

最佳答案

[^,{2}]character class匹配任何字符,除了:',', '{', '2', '}'

With a "character class", also called "character set", you can tell the regex engine to match only one out of several characters.

应该是([^,]{2})+

(                        group and capture to \1
[^,]{2} any character except: ',' (2 times)
)+ end of \1

从索引1和2中获取匹配的组

 ([-\w]+)\s+(.*?)\s+,,

这里是 online demo

enter image description here

示例代码:

import re
p = re.compile(ur'([-\w]+)\s+(.*?)\s+,,')
test_str = u"..."

re.findall(p, test_str)

注意:如果空格是可选的,请使用 \s* 而不是 \s+

关于python - 如何使用 Python 正则表达式匹配双字符异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com