首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#正则表达式只匹配字符串中完整单词的一部分。

C#正则表达式只匹配字符串中完整单词的一部分。
EN

Stack Overflow用户
提问于 2009-05-04 16:30:49
回答 4查看 3.6K关注 0票数 1

在问这个问题之前,我已经在谷歌上搜索过这个问题,并且我查看了所有与StackOverflow相关的问题。

这个问题很简单

我有一串“北大西洋公约组织”

我有一个图案"a.*z",现在它会匹配。

北ATLATIC条约ORGANIZation

但我需要它只匹配完整的单词(例如orgANIZation)

我试过用"\ba_z\b“和"\Ba_z\B”作为模式,但我想我还不太明白

如何更改模式以匹配字符串包含的完整单词(不匹配多个单词)

模式是动态生成的,用户输入*z,我的应用程序将其转换为匹配字符串中部分完整单词的模式。

我的问题是我不知道用户要搜索什么。理想情况下,我会为用户的表达式准备一些regexp。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-04 16:34:44

orgANIZation中的ANIZ是,而不是,是一个完整的单词--它是一个单词的一部分。您的模式不是您所写的-- a*z将与您所描述的不匹配;您可能使用的是a.*z,这会。所以,试试a[^ ]*z,这样它就不匹配空间了。当然,如果除了空格之外还有其他字符不想匹配,比如某些类型的标点符号,那么当然也要把它们放在[^...]结构中。

票数 4
EN

Stack Overflow用户

发布于 2009-05-04 16:42:29

这就是你想要的:

代码语言:javascript
复制
new Regex( @"\b[^ ]*a[^ ]*z[^ ]*\b" );

它只匹配一个单词(不允许空格)--而是整个单词。您可以将您的用户输入转换为这样一个正则表达式--只需将*替换为^*-它甚至可以用于多个通配符。

票数 1
EN

Stack Overflow用户

发布于 2009-05-04 17:00:19

与您的问题没有直接关系,但是您可能想要查看一个RegEx可视化工具,该工具将根据文本输入和给定的正则表达式显示结果。

这样一个工具非常有助于找到正确的模式,这可能是相当棘手的。.net RegEx专用的一个很好的工具是RegExLab,它有点老了,但在显示正则表达式与之匹配方面做得很好。因为页面是德语的,所以只需单击regexlab.006.zip链接即可。源代码也包括在内。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/820810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档