簡體   English   中英

REGEX 刪除 ( ) 內的前導和尾隨空格

[英]REGEX drop leading and trailing spaces within ( )

我有一個字符串,我試圖從中提取數據

(CAM SYSTEM: CIMATRON E13   )

我有以下 REGEX 似乎讓我很接近,但我不想要前導空格或尾隨空格。

(?<=\()(CAM SYSTEM:)([^)]+)(?=\))

我嘗試了幾件事(?<=\()(CAM SYSTEM:)([^\s)]+)(?=\))(?<=\()(CAM SYSTEM:)([^\s*)]+)(?=\))沒有運氣

我期待有2組。 CAM SYSTEM:CIMATRON E13 ,當前的 REGEX 給了我CIMATRON E13

以下是我將如何修改您的正則表達式以解決此問題:

\((CAM SYSTEM:) *(.+?) *\)
  • \(匹配文字(字符,但它在任何捕獲組之外,因此它僅包含在完整匹配中。
  • (CAM SYSTEM:)匹配文字字符串CAM SYSTEM並將其放在第一個捕獲組中,因為它在括號內。
  • *匹配可能存在的任意數量的空格,但它也在任何捕獲組之外,因此您無需擔心這會影響您的結果。
  • (.+?)創建第二個捕獲組,它匹配一個或多個任意字符,但它是惰性匹配,這意味着它匹配盡可能少的字符,同時仍然使匹配工作。
  • *\)匹配后跟文字)字符的任意數量的空格,這會強制第二個捕獲組匹配最后一個括號,不包括尾隨空格。

該解決方案適用於您給定的測試用例,並且不使用任何環顧四周,在我看來,這使它更清潔、更快。

你可以使用這個正則表達式:

(?<=\()(CAM SYSTEM:)\s*(.+?)\s*(?=\))

這不會捕獲:和值的開頭之間或值的結尾和結束之間的任何空格)

正則表達式 101 上的演示

暫無
暫無

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

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