匹配任意单词的第一个和最后一个字符

匹配任意单词的第一个和最后一个字符

我搜索了很多但没有找到任何帮助。

我想使用正则表达式来匹配任何单词的第一个(一个或多个)和最后一个字符(一个或多个),不仅要找到,而且还要与任何单词的第一个和最后一个字符匹配。

例子:

  • 阅读
  • 修复

因此,正则表达式只需匹配“re”和“ing”,而不匹配“ad”或“pair”。并且,正则表达式必须同时(在同一个单词中)匹配“re”和“ing”,而不是分别匹配。因此,输出必须是这样的(我确实将它们加粗了):

  • 关于广告
  • 关于一对

我不是程序员。我只是在 Windows 7 上的 Sublime Text 3 编辑器中编辑/校对非常大的文本。

编辑:解决了!非常感谢 Bo L。你的建议很管用。我在查找框中写入 \b(re)(\S*)(ing)\b,并在替换中写入 $2,它起作用了。你做了非常不同的修复,但现在没问题了 :)

答案1

您的目标是什么?“不与“ad”或“pair”匹配”对您来说意味着什么?
您是否在寻找一种可以匹配以“re”开头并以“ing”结尾的单词的模式,而不管中间是什么?

如果是这样,这可能是一个有用的模式:

\b(re)\S*(ing)\b

'\b' 定义单词边界,而 '\S*' 允许在 're' 和 'ing' 之间有任意数量的非空白字符(0 个或更多,因此从技术上讲“reing”将匹配)。
如果您对组成单词的内容有更严格的要求,您可以根据需要替换 '\S'(也许 '(a-zA-Z)' 表示任何字母,或 '\w' 表示字母、数字和下划线?)

编辑:

如果您希望在保留原始单词的同时替换词缀,则可以使用稍微修改过的模式:

\b(re)(\S*)(ing)\b

并在 Sublime Text 的“替换为”字段中使用以下模式:

un$2ed 

例如,将“修复”更改为“未配对”。$2 引用“修复”中的“配对”并允许您将其保留在替换值中。

但是它仍然会与“reading”匹配,因此您必须手动检查每个匹配项,以确认您没有将“reading”之类的乱码单词添加到“unaded”中。我不是正则表达式专家,但要实现自动化,仅凭正则表达式是无法做到的。

相关内容