簡體   English   中英

正則表達式:需要一些幫助匹配使用分號

[英]Regex: need some help match using semicolon

我有以下輸入: Mobileapp/1.19.2 (SM-S908B; Android 12; da-DK)

我要么需要匹配(SM-S908B;da-DK) ,要么只需要匹配(SM (SM-S908B;

所以匹配( and first ; and last ; and )之間的任何內容

我試過並且能夠使用這個表達式([^(;]+);([^;]+)但它匹配 SM-S908B; Android 12

如果有人可以提供幫助,我將不勝感激,因為我仍在學習正則表達式。

假設至少出現一次分號,可能會將這兩個選項都放在各自的組中:

(?:\(([^;]+)|;\s*([^;)]+)\))

查看在線演示

  • (?: - 打開非捕獲組;
    • \(([^;]+) - 匹配一個文字左括號,后跟第一個捕獲組以匹配 1+ 個非分號字符;
    • | - 或者;
    • ;\s*([^;)]+)\) - 在第二個捕獲組之前匹配分號和 0+ 個空白字符,以匹配除分號或右括號之外的 1+ 個字符。

另一種選擇是僅匹配這些部分:

(?:\(|;.*;\s*|\G(?!^))\K[^;)]+

查看在線演示

  • (?: - 打開非捕獲組;
    • \( - 匹配一個開括號;
    • | - 或者;
    • ;.*;\s* - 匹配從第一個分號到最后一個分號,可能有 0+ 個空格字符;
    • | - 或者;
    • \G(?!^) - 在上一場比賽結束時斷言 position 但排除帶有負前瞻的起始行;
  • \K - 重置報告匹配的起點;
  • [^;)]+ - 匹配除分號或右括號之外的 1+ 個字符。

暫無
暫無

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

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