无法弄清楚为什么正则表达式不起作用
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++正则表达式的实现是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:]]*?" );
我不确定这个问题是由不正确的regex语法引起的,还是regex实现中的错误…
- 为什么在 while 循环中返回表达式不起作用
- OpenGL 3.0+:正交矩阵不起作用
- C++ 正则表达式不匹配空格
- 如果在结构内部使用condition_variable,则它不起作用
- 调试正则表达式不匹配
- 为什么regex_match与我的正则表达式不匹配
- C++:矢量<string>与正则表达式不匹配
- 提升正则表达式不匹配
- 正则表达式不允许在 dot(.) 之后立即写入 dot(.)
- 如果后跟返回 (C++),则 cout 不起作用
- 我的 XML 标签正则表达式不起作用
- C++11正则表达式不匹配任何内容
- 简单正则表达式不匹配
- Boost正则表达式不替换正则表达式网站上正确替换的表达式
- 我的最后一个正则表达式不起作用,但我无法弄清楚原因
- Qt正则表达式不匹配
- 无法弄清楚为什么正则表达式不起作用
- POSIX正则表达式不匹配
- 正则表达式不能以零开头
- 为什么这个正则表达式不能编译