簡體   English   中英

C# 正則表達式 - 匹配某些字符后跟數字/標識符

[英]C# Regex - Match certain char followed by number/identifier

我遇到了一個似乎從未在這里被問過的正則Regex 我必須替換 char a后跟一個whitespace (或不跟隨),但必須后跟一個number (不能替換該數字)。

我有這個正則表達式: [aA]\s.(?<=\d)*這就是結果:

1]

使用(?<=\d)*我想嘗試匹配但不立即捕獲空格后面(或不)后面的字符之后的數字,但顯然它不起作用,也是因為 "\d" 不包括標識符。 標識符可以是一系列沒有定義長度的數字或字母數字字符,也可以是字母排序(如果它是字母數字)。 它們可以是A54N3Z4G7884544AZ77A11A 組合總是在變化。

我只想匹配數字8 (或任何其他數字,或像N574A類的標識符)之前的a並將該 char 替換為art ,但保持數字 /identifier 不變,因此結果應該是: agricoltura n 6 sensi dell'art8agricoltura n 6 sensi dell'artN574A ,如果目標字符串是agricoltura n 6 sensi dell'a8agricoltura n 6 sensi dell'aN574A ,(所以沒有空格)結果應該是: agricoltura n 6 sensi dell'art8或 agricoltura agricoltura n 6 sensi dell'artN574A

所以通用規則應該是: Match [aA] followed by an optional space then must be followed by a number or an identifier that must not be captured

有可能做這樣的事情嗎? 有什么解決辦法? 太感謝了!

更新

使用\\b([aA])\\s*([A-Za-z]*\\d[\\dA-Za-z]*)\\b模式似乎替換了正確的值, 這里是演示

您可以使用

\b([aA])\s*([A-Za-z]*\d[\dA-Za-z]*)\b

替換為$1rt$2 查看正則表達式演示

細節

  • \b - 單詞邊界
  • ([aA]) - 第 1 組(用替換模式中的$1表示): aA
  • \s* - 0 個或更多空格
  • ([A-Za-z]*\d[\dA-Za-z]*) - 第 2 組(在替換模式中使用$2表示):包含至少一個數字的字母數字完整單詞:
    • [A-Za-z]* - 零個或多個 ASCII 字母
    • \d - 一個數字
    • [\dA-Za-z]* - 0+ 個數字或 ASCII 字母(將\d替換為0-9以僅匹配 ASCII 數字,或將RegexOptions.ECMAScript標志傳遞給Regex構造函數)
  • \b - 單詞邊界。

暫無
暫無

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

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