簡體   English   中英

無法弄清楚為什么正則表達式不起作用

[英]Can't figure out why regex is not workng

我正在使用C ++正則表達式來匹配一個字符串,該字符串以兩個單詞開頭,兩個單詞之間用空格和換行符分隔,並包含帶有多個換行符的更多文本。 像這樣:

word1 word2
some
other
text

我正在使用以下正則表達式:

wregex rCompound( L"^[а-я-]+ [а-я-]+[\\r\\n](.|\\s)*?" );

aя是俄語字母的第一個和最后一個小寫字母。

在以下字符串上檢查匹配時:

wstring _s(L“авот\\ n \\
частицаразг。\\ n \\
1)Употр.приуказанииналицо,предмет,находящиесяпоблизости。\\ n \\
2)Употр.приуказаниинапоследующийисчерпывающийответ。\\ n \\
3)Употр.приусилениипредикативнойчастиприответенавопрос。\\ n \\
4)Употр.присопоставленииссодержаниемпредшествующегопредложения。\\ n \\
5)Употр.припротивопоставлениичастейсложногопредложения。\\ n \\
6)Употр.припереходекдругоймысли,кдругойтемеразговора。“);

發生堆棧溢出。 但是,如果在同一字符串上檢查匹配項,但是刪除了與“ 3)”相關的部分,則正則表達式可以正常工作:

wstring _s(L“авот\\ n \\
частицаразг。\\ n \\
1)Употр.приуказанииналицо,предмет,находящиесяпоблизости。\\ n \\
2)Употр.приуказаниинапоследующийисчерпывающийответ。\\ n \\
4)Употр.присопоставленииссодержаниемпредшествующегопредложения。\\ n \\
5)Употр.припротивопоставлениичастейсложногопредложения。\\ n \\
6)Употр.припереходекдругоймысли,кдругойтемеразговора。“);

c ++ regex實現是VS 2013的實現。這里可能出什么問題?

更新:

匹配檢查代碼:

bool _b = regex_match( _s, rCompound );

更新2:

下面是帶有測試項目的代碼:

#include "stdafx.h"
#include <regex>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    wregex rCompound( L"^[а-я-]+ [а-я-]+[\\r\\n](.|\\s)*?" );

    wstring _s( L"а вот\n\
  частица разг.\n\
  1) Употр.при указании на лицо, предмет, находящиеся поблизости.\n\
  2) Употр.при указании на последующий исчерпывающий ответ.\n\
  3) Употр.при усилении предикативной части при ответе на вопрос.\n\
  4) Употр.при сопоставлении с содержанием предшествующего предложения.\n\
  5) Употр.при противопоставлении частей сложного предложения.\n\
  6) Употр.при переходе к другой мысли, к другой теме разговора." );

    bool _b = regex_match( _s, rCompound );
    return 0;
}

我通過將正則表達式改寫為以下內容來解決了這個特定問題:

wregex rCompound( L"^[а-я-]+ [а-я-]+[\\r\\n]*[[:cntrl:][:graph:][:space:]]*?" );

但是我不確定這個問題是由不正確的正則表達式語法引起的還是這是正則表達式實現中的錯誤...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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