![](/img/trans.png)
[英]Are XML Schema regular expressions compatible to JavaScript/ECMAScript regular expressions?
[英]How to collate sequence \" using ECMAScript regular expressions?
我正在嘗試構造一個正則表達式,以將分隔的語音標記( \\"
)視為單個字符。
以下代碼可以正常編譯,但是在嘗試初始化rgx時終止,並拋出錯誤Abort trap: 6
使用libc ++。
std::regex rgx("[[.\\\\\".]]");
std::smatch results;
std::string test_str("\\\"");
std::regex_search(test_str, results, rgx);
如果我刪除[[. .]]
[[. .]]
,它運行正常, results[0]
按預期返回\\"
,但如上所述,我希望此序列可用作字符類。
編輯:好的,我現在意識到我以前對整理的序列的理解是不正確的,並且它不起作用的原因是未將\\\\\\\\\\"
定義為序列。所以我的新問題是:是否可以定義整理的序列?
因此,我想出了我要去哪里的錯誤,並認為如果有人偶然發現它,我會把它留在這里。
您可以使用(?:sequence)
指定一個被動字符組,從而允許像字符類一樣應用量詞。 也許與我最初提出的要求不完全相同,但至少在我看來,它實現了相同的目的。
為了匹配以雙引號(包括結果中的這些字符)開頭和結尾的字符串,但允許在字符串中使用帶引號的引號,我使用了表達式
\"(?:[^\"^\\\\]+|(?:\\\\\\\\)+|\\\\\")*\"
它說要獲取盡可能多的字符,前提是字符不是引號或反斜杠,如果不匹配,則首先嘗試匹配偶數個反斜杠(以允許對此字符進行定界),或第二個定界符引號。 此非捕獲組會盡可能匹配,僅在達到\\"
時才停止。
我無法對此效率發表評論,但是絕對可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.