[英]Regex - Get matches of @[SomeText] in a string
我想在字符串中獲取@[SomeText]
模式的所有匹配項。
例如,對於此字符串:
這是@[text1]
一些文本@[text2]
我想要@[text1]
和@[text2]
。
我正在使用Regex Hero在線檢查我的模式匹配情況,當有一個表達式要匹配時,我的模式可以正常工作,
例如:
here is @[text1] text
但如果有多個,則兩者都與中間的文本匹配。
這是我的正則表達式:
@\[.*\]
希望能幫助您隔離這些事件。
這里的問題是您正在使用貪婪量詞( *
)。 要捕獲您需要的所有內容,應使用帶有全局修飾符的惰性量詞( *?
):
/(@\[.*?\])/g
這應該工作:
@\[(.*?)\]
細節 :
(。*?) :以非貪婪的方式匹配所有內容並捕獲它。 因為*? 量詞是惰性的(非貪婪的),它匹配盡可能少的字符以使整體匹配嘗試成功,即text1
。 對於從給定位置開始的匹配嘗試,惰性量詞為您提供最短的匹配。
默認情況下,。*是貪婪的,因此它只找到一個匹配項,將“ text1]和@ [text2”視為兩個方括號之間的文本。
如果在。*后面添加問號,它將在到達]之前找到最少的字符數。
因此,正則表達式\\ @ [。*?]做您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.