簡體   English   中英

C#中的正則表達式:匹配在“ _”或“”或“”之前和/或之后的字符串

[英]Regex in C#: match string thats preceded and/or followed by “_” or “ ” or “”

假設我有一個像“ aus”的詞,我想用“ off”代替它的所有出現。 然后,我還想找到它的所有可能的拼寫,例如“ AU”,“ aUs”,“ AUS”等等。 但重要的是,只有當它“單獨站立”時才被替換,因為它只有空格,下划線(_)或前后沒有空格,因此應在其中替換

" aus"
"aus"
"_aus"
"_aus_"
"aus_"

但不在

"ausschalten"
"aushebeln"
" ausschalten"

我嘗試了^(_| )(A|a)(U|u)(S|s)(_|)$但是它不能正常工作:/

您可以使用RegexOptions.IgnoreCaseRegexOptions.IgnoreCase標志(或其內聯版本(?i) ):

@"(?i)(?<![\w-[_]])aus(?![\w-[_]])"

正則表達式演示

說明

  • (?<![\\w-[_]]) -檢查在aus之前是否沒有數字或字母字符(使用字符類減法 ,我從\\w類中刪除了_
  • aus文字字符序列aus
  • (?![\\w-[_]]) -檢查aus之后是否沒有字母或數字。

\\p{L} (任何Unicode基本字母)和\\p{N} (任何數字)的更簡單替代方法

(?i)(?<![\p{L}\p{N}])aus(?![\p{L}\p{N}])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM