[英]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.