我試圖圍繞這個和我所有的例子在谷歌和stackoverflow不幫我理解。通過字符串跳過/忽略特定字符
我有這個字符串
{{@test: mytest}}
{{@test mytest}}
我想捕捉test
和mytest
來自這兩個例子。所以如果在我的字符串中發生這兩個將返回相同的數組集。
這是我/我試圖到目前爲止
/{{\s*@\s*(.*)\s*:\s*(.*)\s*}}/
這將在第一個例子,但是無法在第二個。
所以我想也許答案是搜索槽跳過:
的字符串?
我試圖圍繞這個和我所有的例子在谷歌和stackoverflow不幫我理解。通過字符串跳過/忽略特定字符
我有這個字符串
{{@test: mytest}}
{{@test mytest}}
我想捕捉test
和mytest
來自這兩個例子。所以如果在我的字符串中發生這兩個將返回相同的數組集。
這是我/我試圖到目前爲止
/{{\s*@\s*(.*)\s*:\s*(.*)\s*}}/
這將在第一個例子,但是無法在第二個。
所以我想也許答案是搜索槽跳過:
的字符串?
您還沒有明確的標準,但假設你想匹配可能不包含空格的文本,您可以使用此:
/{{\s*@\s*([^:\s]*)\s*:?\s*([^}\s]*)\s*}}/
[^:\s]*
既不包含冒號的字符串匹配,也沒有空白[^}\s]*
既不包含結束括號也不空白的字符串匹配:?
可選結腸匹配嘗試\{\{\s*@([^@:\s]+)\s*:?\s+([^}\s]+)\s*\}\}
。
編輯:艾克,蒂姆Pietzcker擊敗了我。我們的表情有些微妙的差異,但是我認爲,任何一個人都應該做你想做的事。我選擇在幾個地方使用+
而不是*
,在那裏我對您的問題的解釋讓我相信至少必須有一個給定的字符。
編輯2:我的方法的一個優點是它不符合{{@testmy-test}}
。
我添加了'\ s *',這樣它就會匹配如果有空間或沒有(所以我從我的測試中相信) – Eli
@Eli:是的,那很完美,不是嗎? ? –
這個很好用!我改變了一點,因爲我導致一些結果被省略。我把它變成了這個'{{\ s * @ \ s *([^:\ s] *)\ s *:?\ s *(。*)\ s *}}' – Eli