[英]C# Regex - Match certain char followed by number/identifier
我遇到了一個似乎從未在這里被問過的正則Regex
。 我必須替換 char a
后跟一個whitespace
(或不跟隨),但必須后跟一個number
(不能替換該數字)。
我有這個正則表達式: [aA]\s.(?<=\d)*
這就是結果:
使用(?<=\d)*
我想嘗試匹配但不立即捕獲空格后面(或不)后面的字符之后的數字,但顯然它不起作用,也是因為 "\d" 不包括標識符。 標識符可以是一系列沒有定義長度的數字或字母數字字符,也可以是字母排序(如果它是字母數字)。 它們可以是A54N3
、 Z4G78
或8454
或4AZ7
或7
或A1
、 1A
。 組合總是在變化。
我只想匹配數字8
(或任何其他數字,或像N574A
類的標識符)之前的a
並將該 char 替換為art
,但保持數字 /identifier 不變,因此結果應該是: agricoltura n 6 sensi dell'art8
或agricoltura n 6 sensi dell'artN574A
,如果目標字符串是agricoltura n 6 sensi dell'a8
或agricoltura 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
表示): a
或A
\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.