正则表达式将包含 & 的每个单词用 $...$ 括起来

正则表达式将包含 & 的每个单词用 $...$ 括起来

我在想对此有什么可靠的方法。

我尝试通过以下方式匹配失败:

[A-Za-z]*&[A-Za-z]*

返回:

在此输入图像描述

所以环境上的错误\\&\hskip

如何更好地匹配&字母周围的标记?

答案1

正如@cuonglm所说,*意味着0个或更多。既然您已经用 Perl 标记了它,我假设您正在使用 Perl 的正则表达式引擎,这意味着您可以使用+: 1 或更多。因此,您要进行的替换将是以下之一:

  1. 匹配字母数字字符或下划线:

    s/\w+&\w+/\$$&\$/g
    
  2. 仅匹配字母(请注意,i这使得匹配不区分大小写):

    s/[a-z]+&[a-z]+/\$$&\$/gi
    
  3. 仅匹配“单词”,确保整个单词只包含字母:

    s/\b[a-z]+&[a-z]+\b/\$$&\$/gi
    

答案2

你的问题是*修饰符,它匹配或多个字符出现。因此它将匹配&未被 包围的内容[A-Za-z]

您只需要:

[A-Za-z]&[A-Za-z]

甚至更好:

[[:alpha:]]&[[:alpha:]]

相关内容