亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在正則表達式中只排除一個字符?

如何在正則表達式中只排除一個字符?

瀟湘沐 2022-05-19 14:07:29
我想從字符串中提取一些東西。例如字符串是: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

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())

    print

輸出:


xxx text

xxx text


xxx text

xxx text


xxx [text]

xxx [text]


xxx text

xxx text


xxx text

xxx text


xxx text

xxx text


查看完整回答
反對 回復 2022-05-19
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

你可以像這樣\S替換\w

re.search(r'xxx \w+', s)


查看完整回答
反對 回復 2022-05-19
  • 2 回答
  • 0 關注
  • 349 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號