簡體   English   中英

如何形成正則表達式以匹配所有內容到“(”

[英]How to form regex to match everything up to a "("

在 javascript 中,如何形成正則表達式以匹配所有內容,但不包括左括號“(”?

示例輸入:

"12(pm):00" "12(am):))" "8(am):00"

我發現/^(.*?)\\(/在“高達”部分成功,但返回的匹配包括“(”

在 regex101.com 中,它說第一個捕獲組是我要找的,有沒有辦法只返回捕獲的組?

有三種方法可以解決這個問題。 第一個是限制你匹配的字符不包括括號:

 let match = "12(pm):00".match(/[^(]*/); console.log(match[0]);

第二種是使用捕獲組僅獲取您感興趣的匹配部分:

 let match = "12(pm):00".match(/(.*?)\\(/); console.log(match[1]);

第三種是使用lookahead從匹配中明確排除括號:

 let match = "12(pm):00".match(/.*?(?=\\()/); console.log(match[0]);

與 OP 一樣,請注意第二種和第三種情況下的非貪婪修飾符:有必要限制量詞,以防字符串內部還有另一個開括號。 這首先不是必需的,因為明確禁止量詞吞噬括號。

嘗試

^\d+

^在行首斷言位置

\\d匹配一個數字(等於 [0-9])

+量詞——匹配一次和無限次,盡可能多次,根據需要回饋(貪婪)

https://regex101.com/r/C9XNT4/1

暫無
暫無

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

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