Regex 正则表达式匹配多个整词

Regex 正则表达式匹配多个整词,regex,wxwidgets,Regex,Wxwidgets,如何编写一个在wxRegEx中工作的正则表达式,以匹配这个伪正则表达式:*好|更好|最好* 我知道正则表达式在字符级的匹配,例如,*[ch]pp,但是整个单词如何匹配呢 谢谢 好|更好|最好 我不知道你说的“优雅”是什么意思。就我而言,这非常优雅。这个问题是一个很好的例子,说明了为什么您应该始终指定所使用的正则表达式的风格。大多数正则表达式风格提供了一种匹配单词边界的方法,其中大多数使用\b。据介绍,wxRegEx允许您从三种口味中选择一种:BRE、ERE或ARE。其中,仅支持单词边界,并使用\

如何编写一个在wxRegEx中工作的正则表达式,以匹配这个伪正则表达式:
*好|更好|最好*

我知道正则表达式在字符级的匹配,例如,
*[ch]pp
,但是整个单词如何匹配呢


谢谢

好|更好|最好


我不知道你说的“优雅”是什么意思。就我而言,这非常优雅。

这个问题是一个很好的例子,说明了为什么您应该始终指定所使用的正则表达式的风格。大多数正则表达式风格提供了一种匹配单词边界的方法,其中大多数使用
\b
。据介绍,wxRegEx允许您从三种口味中选择一种:BRE、ERE或ARE。其中,仅支持单词边界,并使用
\y
,而不是
\b
。假设您在编译时指定了
wxRE\u ADVANCED
,此正则表达式将匹配任何包含
good
better
best
一词的字符串:

\y(good|better|best)\y

根据您使用的示例判断,我认为您可能混淆了正则表达式和全局表达式。例如,
*.[ch]
是用于匹配以
.c
.h
结尾的文件名的glob;这个函数的正则表达式是
\.[ch]$
。我之前链接的站点上有一个很好的正则表达式教程,但我最关心的区别是正则表达式不必像glob那样描述整个字符串。这就是为什么我不必以
*
开始正则表达式,但我必须在末尾添加
$
,以防止它与
foo.cs
bar.html

之类的字符串相匹配。。。伪这真的不管用。我需要一个有效的。我试过了。*\b(一|二|三)\b.*但那也不行。你说“不行”是什么意思?你用什么语言?你的输入是什么?你得到了什么?我使用的是wxRegEx。“不起作用”是指它发出错误“错误:无效正则表达式“*1 | 2 | 3*”:量词操作数无效”。它甚至没有到达文本匹配阶段(交互式正则表达式测试程序)。这是因为
*
是一个量词。如果将其放在字符(或组)之后,它将与该字符匹配零次或多次。如果你只是把它放在前面那样,这是一个错误,因为你没有把它放在一个字符后面。如果你告诉我们(通过编辑原始问题)你的输入是什么,你尝试过的正则表达式是什么,你期望得到什么,以及你实际得到什么(错误或其他),那么我们可以帮助你更有效率。好吧,你在第一次回答中说“这很优雅”,这意味着它可以工作?我只是回答你的问题。你知道为什么“\b(good | better | best)\b”在wxRegEx中有效,但在wxRegEx中不起作用吗?(wxRegEx没有发出错误,但也不匹配)?@marcog这是一个很好的资源,谢谢!为什么“\b(good | better | best)\b”在wxRegEx中不起作用?另一个很好的资源:这是一个了不起的答案。非常感谢。我没有足够的分数给你打分,但至少我可以评论并说(1)你强调了glob和regex之间的根本区别。(2) 您注意到了对wxRE_ADVANCED的要求(我的系统上似乎没有启用它,因为\y也不工作)。(3) 您提供了一个关于wxRegEx概述的优秀链接。谢谢啊!!我刚刚意识到,“编译时指定wxRE_高级”的意思是“调用wxRegEx::compile()”。现在就去试试……酷。我没有访问wxWidgets来测试这个,所以感谢您的反馈。