繁体   English   中英

如何精确匹配字符串中的所有单词,包括以 ',?.?'"' 结尾的单词,但不使用正则表达式匹配任何其他标点符号?

[英]How do I exact match all the words in a string includes those ends with '!,?.'"' but do not match those with any other punctuation using regex?

例如,如果我要搜索的模式是apple

我要搜索的字符串是apple apple@323 apple.. apple??...?? apple??%% Ilovesapple apple apple@323 apple.. apple??...?? apple??%% Ilovesapple

预期匹配:

apple 
apple.. 
apple??...!!

我想匹配所有确切的单词,唯一的例外是单词以,?..'"中的标点符号结尾

这是你想要的吗?

\bapple[!,?.'\"]*(?=\s+|$)

正则表达式演示

在此处输入图像描述

细节:

  • \b 'apple' 的单词边界
  • apple你要搜索的模式
  • [,?..'\"]*要匹配的特殊字符在末尾出现零次或多次
  • (?=\s+|$)正向预测以确保匹配的单词后跟空格或行尾。

另一个版本

如果您在“apple”之前不允许任何非空格字符,则另一种可能性是:

(?:\s+|^)(apple[!,?.'\"]*)(?=\s+|$)

正则表达式演示请注意@apple? 不匹配,因为它以@开头

请参阅Group 1的比赛

在此处输入图像描述

细节:

  • (?:\s+|^)非捕获组,用于空白或“苹果”之前的行首

  • (捕获组的开始(捕获到第 1 组)

    • apple你要搜索的模式
    • [,?..'\"]*要匹配的特殊字符在末尾出现零次或多次
  • )捕获组结束(捕获到第 1 组)

  • (?=\s+|$)正向预测以确保匹配的单词后跟空格或行尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM