![](/img/trans.png)
[英]Regex to check space after individual single quote or individual double quote
[英]Regex match string in double or single quote and follow by space
我正在嘗試匹配單引號或雙引號之間的字符串,並且必須在其后加上特定的文本。
input
:
<title ng-bind="'key_name' | i18n"></title>
或者可以是
<span class="sr-only">{{ 'key_name' | i18n }}</span>
要么
<span class="sr-only">{{ "key_name" | i18n }}</span>
我想捕獲那個key_name
這是我到目前為止所遇到的,但是失敗了。
["']([^)]+)["']\s|\si18n
該表達式將適用於您發布的三個示例,但總的來說不是很靈活。
/(?:\{\{\s*|"\s*(?=')|'\s*(?="))((['"]).*?\2)\s\|\si18n/
// Without capturing quotes:
/(?:\{\{\s*|"\s*(?=')|'\s*(?="))(['"])(.*)?\1\s\|\si18n/
實際匹配將分別在[1]
和[2]
。 您可能需要將某些\\s
更改為\\s*
或\\s+
。
.*(["'])([^)]*?)\1\s*?\|\s*?i18n
開頭的“。*”必須匹配最少的字符數。 對第一個捕獲的反向引用是為了確保兩個引號都匹配。 “ |”周圍可以有任意數量的空格。 不過,這是假設您要捕獲的文本中沒有未轉義的引號。 匹配結果在$ 2中,因為$ 1用於保持引號。
引號中的子字符串是否總是一個單詞,例如key_name
? 如果是這樣,這應該是您所需要的:
(["'])(\w+)\1\s*\|\s*i18n\b
如果沒有,這可能會使您正確:
(["'])([^'"]+)\1\s*\|\s*i18n\b
無論哪種情況,您要查找的零件都將被捕獲在第2組中。 如果您的需求比這更復雜,我們將需要更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.