[英]regular expression to match special characters between delimiters
我有一個基本的字符串,並希望只在括號之間得到特定的字符
基本字符串:這是一個測試字符串[或多或少]
正則表達式:捕捉所有r和e的作品就好了。
(r|e)
=>這是E處ST STř荷蘭國際集團[MOØ 重新 R LëSS]
現在我想使用以下正則表達式並將其與我的正則表達式組合在一起,只給出括號之間的r和e,但遺憾的是這不起作用:
\[(r|e)\]
預期結果應該是:mo re o r l s ss
誰能解釋一下?
編輯:問題非常類似於這個: 正則表達式查找包含在兩個字符之間的字符串,同時排除分隔符
但有區別的是,我不想在括號之間得到整個字符串。
跟進問題
base string = 'this is a link:/en/test/äpfel/öhr[MyLink_with_äöü] BREAK äöü is now allowed'
我需要找到非ASCII字符AOU,以取代他們,但只在一個正則表達式link:...]
子與字開頭link:
和一個結束]
字符。
結果字符串將如下所示:
result string = 'this is a link:/en/test/apfel/ohr[MyLink_with_aou] BREAK äöü is now allowed again'
注釋中的解決方案中的正則表達式/[äöü]+(?=[^\\]\\[]*])/g
僅在兩個括號之間提供äöü個字符。
我知道正則表達式中有一個char列表的前瞻性前瞻,但我想知道為什么這個不起作用:
/link:([äöü]+(?=[^\\]\\[]*])/
謝謝
您可以使用以下解決方案:在link:
和]
之間匹配所有內容,並僅在替換回調方法中的匹配子字符串內替換您的字符:
var hashmap = {"ä":"a", "ö":"o", "ü":"u"}; var s = 'this is a link:/en/test/äpfel/öhr[MyLink_with_äöü] BREAK äöü is now allowed'; var res = s.replace(/\\blink:[^\\]]*/g, function(m) { // m = link:/en/test/äpfel/öhr[MyLink_with_äöü] return m.replace(/[äöü]/g, function(n) { // n = ä, then ö, then ü, return hashmap[n]; // each time replaced with the hashmap value }); }); console.log(res);
圖案細節 :
\\b
- 領先的單詞邊界 link:
- 整個單詞link
:
a之后 [^\\]]*
-比其他零個或多個字符]
(A [^...]
是一個否定的字符類,它匹配任何字符/炭范圍(一個或多個),但在其內部限定的那些)。 另外,請參閱有效替換字符串中的所有重音字符?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.