我有一个字符串如下:
players: 2-8使用regex,我将如何匹配2和8而不匹配其他一切(即“玩家:”和“-”)?
我试过:
players:\s*([^.]+|\S+)但是,这与整个短语相匹配,并使用了“.”在末尾标记字符串的结尾,这可能并不总是这样。
如果我能用“-”来匹配数字会好得多,但我也需要它从“玩家”的角度去展望未来,因为我将用它来知道数据对于给定的变量是正确的。
使用python如果这很重要
谢谢!!
发布于 2021-11-11 11:08:44
使用players:\s*([^.]+|\S+)将使用单个捕获组匹配除点以外的任何字符,或匹配非空白字符字符。结合这些,它可以匹配任何字符。
要获得仅使用的匹配,可以使用Python PyPi 正则模,您可以使用\G锚点:
(?:\bplayers:\s+|\G(?!^))-?\K\d+模式匹配:
(?:非捕获群\bplayers:\s+阻止部分单词匹配的单词边界,然后匹配players:和1+空格字符|或\G(?!^)锚在上一次匹配结束时断言当前位置以继续匹配)闭非捕获群-?\K匹配一个可选的-,忘记到目前为止匹配的内容\d+匹配1+数字import regex
s = "players: 2-8"
pattern = r"(?:\bplayers:\s+|\G(?!^))-?\K\d+"
print(regex.findall(pattern, s))输出
['2', '8']您还可以使用一种使用re的两个捕获组的方法。
import re
s = "players: 2-8"
pattern = r"\bplayers:\s+(\d+)-(\d+)\b"
print(re.findall(pattern, s))输出
[('2', '8')]https://stackoverflow.com/questions/69926333
复制相似问题