8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

正则表达式单词边界和特殊字符

Sarika Parakala 2月前

99 0

我有一个正则表达式来转义搜索字符串中的所有特殊字符。这很有效,但是我似乎无法让它与单词边界一起工作。例如,使用 haystack 广告...

我有一个正则表达式来转义搜索字符串中的所有特殊字符。这很好用,但是我似乎无法让它与单词边界一起工作。例如,使用 haystack

add +

或者

add (+)

和针

+

正则表达式 /\+/gi 匹配 \'+\'。但是正则表达式 /\b\+/gi 不匹配。有什么办法可以让它工作吗?

使用

add (plus)

作为 haystack 和 /\bplus/gi 正则表达式,它匹配得很好。我只是不明白为什么转义字符会出现问题。

帖子版权声明 1、本帖标题:正则表达式单词边界和特殊字符
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Sarika Parakala在本站《apache-spark》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 边界是非常有条件的断言;它们锚定什么取决于它们接触什么。请参阅 此答案 以获取详细解释,以及您可以采取哪些其他措施来处理它。

  • 不确定如何更具体。我需要使用单词边界 \b 来指定特殊字符位于单词的开头。我更新了问题以包含“add (+)”作为示例,但显然还有几十个字符(空格除外)指定单词边界。

  • 我编辑了我的答案以解释更普遍的情况,但如果这不是你想要的,那么你需要更具体地说明你想要什么。

  • 这在我给出的具体示例中有效,但不能正确考虑单词边界。例如,它不能像 Haystack 那样对“add (+)”起作用。

  • 尝试将其更改为:

    /\b\s?+/gi
    

    编辑:

    根据需要扩展此概念。如果您想要任何单词边界后的第一个 +:

    /\b[^+]*+/gi
    
  • 绝对不是单词字符,但您对 \b 实际用法的解释给了我一个正确的方向。我现在正在对我的正则表达式的第一个字符进行 JS 检查。如果是 \`,我不会附加 \b`。如果不是,我会附加。似乎得到了我想要的结果。谢谢。

  • 您是否想匹配任何非单词字符?那就是 \W(大写“w”)。或者您可以使用 \B 来断言 + 前面不是单词字符。

  • 这确实很有道理。那么我认为,如果不在 + 之前创建一个预定义字符列表(例如 \s、\(、\[ 等)来匹配,就无法实现我想要的效果?

  • \b 零宽度断言 :它不消耗任何字符,它只是断言在给定位置上某个条件成立。单词边界断言该位置要么在单词字符之前,而不是在单词字符之后,要么在单词字符之后,而不是在单词字符之前。(“单词字符”是字母、数字或下划线。)在您的字符串中:

    add +
    

    ...开头有一个单词边界,因为 a 前面没有单词字符,第二个后面有一个单词边界, d 因为 后面没有单词字符。 \b 正则表达式 ( /\b\+/ ) 中的 试图在空格和 之间进行匹配 + ,但这不起作用,因为它们都不是单词字符。

  • 我改变了示例字符串的格式,使其中的空格更加明显;它们对于理解正则表达式失败的原因至关重要。

返回
作者最近主题: