簡體   English   中英

如何使用ECMAScript正則表達式整理序列\\“?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM