簡體   English   中英

RegEx搜索和替換模式

[英]RegEx search and replace in pattern

我需要搜索一個模式,該模式可以隨文檔的不同而變化,但是遵循一定的模式。 模式將始終是9個數字,后跟3個字母。 有時它們之間會有一個空間,有時則沒有。 這是要搜索的文本示例:

  1. 009244828 FLE
  2. MID021087275
  3. 006386476JJK
  4. 002973303 JJK
  5. MNS 000110924
  6. MNS000110924
  7. 009244828PSC
  8. 001915657SCR

我當前的正則表達式如下: .+?(?=(JJK|FLE|PSC|SCR)) 這將返回第1、3、4、7和8行,如下所示:1。

  1. 009244828 / s
  2. 006386476
  3. 002973303
  4. 009244828
  5. 001915657

照原樣,但不返回字母。 我需要用字母返回這些行並刪除空格(如果有的話)。 我返回的結果應如下所示:

  1. 009244828FLE
  2. 006386476JJK
  3. 002973303JJK
  4. 009244828PSC
  5. 001915657SCR

讓我們逐步編寫您要查找的正則表達式。

您需要匹配的是:

  • 9個十進制數字\\d{9}
  • 可選的空格字符\\s?
  • 3個大寫字母[AZ]{3} (如果字母可能是小寫,請使用[a-zA-Z]{3}

放在一起,此正則表達式幾乎可以滿足您的要求:

\d{9}\s?[A-Z]{3}

我說“差不多”是因為它不能讓您擺脫數字和字母之間的空格。 為此,您需要將字母和數字放入捕獲組中-之后,您可以簡單地將捕獲的子字符串連接起來(使用$1$2\\1\\2的替換表達式)來獲取所需的確切內容。

(\d{9})\s?([A-Z]{3})

如果要確保每個數字字母組都在其單獨的行上,只需將整個正則表達式包裝在^$ ,然后在以下兩種模式下將其運行,即這兩個字符與行的開頭/結尾匹配,而不是整個字符串的開頭/結尾。

^(\d{9})\s?([A-Z]{3})$

暫無
暫無

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

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