我想從字符串中提取一些東西。例如字符串是: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
提交
取消