我想从字符串中提取一些东西。例如字符串是:s = "xxx text, yyy"expected = "xxx text"s = "xxx text yyy"expected = "xxx text"s = "xxx [text] yyy"expected = "xxx [text]"s = "xxx text,"expected = "xxx text"s = "xxx text "expected = "xxx text"我目前的代码是:re.search(r'xxx \S+', s)所以,在我的正则表达式中,我不能排除逗号','。我知道[^,]可以排除逗号,但我怎样才能将它与\S.就我而言,我必须使用'\S',我的要求只是排除基于 . 的逗号\S。我尝试了正则表达式断言:re.search(r'xxx (\S+(?!\,))', s).groups(),但它仍然提取了逗号。
2 回答
幕布斯6054654
print
TA贡献1876条经验 获得超7个赞
这是完成这项工作的两种方法:
s="xxx text, yyy"
# if there is ALLWAYS a comma after.
res = re.search(r'xxx \S+(?=,)', s)
print(res.group())
# else
res = re.search(r'xxx [^\s,]+', s)
print(res.group())
根据新的测试用例更新:
ar = [
"xxx text, yyy",
"xxx text yyy",
"xxx [text] yyy",
"xxx text,",
"xxx text ",
"xxx text",
]
for s in ar:
# choose one of them
print(re.search(r'xxx \S+?(?=,|\s|$)', s).group())
print(re.search(r'xxx [^\s,]+', s).group())
输出:
xxx text
xxx text
xxx text
xxx text
xxx [text]
xxx [text]
xxx text
xxx text
xxx text
xxx text
xxx text
xxx text
添加回答
举报
0/150
提交
取消