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

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

正則表達式完全匹配 1 個特定字符

正則表達式完全匹配 1 個特定字符

C#
開滿天機 2023-07-22 15:47:02
我正在嘗試匹配@relRef但不是@@absRef來自:Stuff @relRef more stuff @@absRef據我了解,[^@]@{1}[^\s]*應該可以,但它仍然錯誤地選擇兩者。并不{1}意味著我認為我所做的?(我認為這意味著“與前一件事完全匹配1次”)[^@]@[^@][^\s]*確實有效,但對于我的用例來說不太方便,更重要的是,我不明白為什么我原來的解決方案不起作用。最后,如果這個答案是多個字符,那么無論這個答案最終會發生什么變化。(即,如果句子是Stuff AT_relRef more stuff ATAT_absRef這樣,那么現在我不會檢查單個@字符,而是檢查“AT”。)長話短說:1)為什么[^@]@{1}[^\s]*匹配@@absRef以及如何將其修復為僅匹配@relRef?2) 如果我使用多個字符來標記引用,#1 的答案是否會改變?(即AT_relRef和ATAT_absRef)
查看完整描述

1 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您的正則表達式匹配兩者,因為[^\s]它匹配任何字符,但空格也會匹配該@字符。在這兩種情況下都匹配空格[^@],因此它沒有足夠的幫助。此外,@{1}與 相同@,{1}量詞在任何正則表達式中始終是多余的。

您可以使用

(?<!@)@[^\s@]\S*

請參閱正則表達式演示。

細節

  • (?<!@)-@不在當前位置之前

  • @- 一個@字符

  • [^\s@]@- 除和 空格之外的字符

  • \S*- 0 個或多個非空白字符。

對于第二種情況,負向回顧也將起作用:

(?<!AT)AT_\S*

請參閱正則表達式演示。它匹配

  • (?<!AT)- 前面沒有的任何位置AT

  • AT_- 一個子AT_

  • \S*- 0+ 個除空格之外的字符。


查看完整回答
反對 回復 2023-07-22
  • 1 回答
  • 0 關注
  • 192 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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