如何忽略正则expression式主题string中的空格?
是否有一种简单的方法来使用正则expression式模式search匹配时忽略目标string中的空格? 例如,如果我的search是“猫”,我想要“c ats”或“ca ts”匹配。 因为我需要find匹配的开始和结束索引(包括任何空格),所以我不能去掉空格,以便突出显示该匹配,并且出于格式化的目的,任何空格都需要在那里。
你可以在你的正则expression式中的每个其他字符之间加上可选的空白字符\s*
。 虽然授予,它会有点冗长。
/cats/
– > /c\s*a\s*t\s*s/
解决Steven对Sam Dufel的回答的评论
谢谢,听起来这是要走的路。 但我只是意识到,我只想要可选的空白字符,如果他们遵循换行。 例如,“c \ n ats”或“ca \ n ts”应该匹配。 但是如果没有新行,就不会希望“c ats”匹配。 关于如何做的任何想法?
这应该做的伎俩:
/c(?:\n\s*)?a(?:\n\s*)?t(?:\n\s*)?s/
看到这个页面的所有不同的'猫'的变化,这匹配。
您也可以使用条件来解决这个问题 ,但是它们在正则expression式的javascript风格中不被支持。
如果你只想允许空格,那么
\bc *a *t *s\b
应该这样做。 也要允许标签,使用
\bc[ \t]*a[ \t]*t[ \t]*s\b
如果你还想find像bobcats
或catsup
cats
一样的文字中的cats
请移除\b
锚。
你可以在searchstring中的每个字符之间放置\s*
,所以如果你正在寻找猫,你可以使用c\s*a\s*t\s*s\s*s
这很长,但你可以dynamic地build立string。
你可以看到它在这里工作: http : //www.rubular.com/r/zzWwvppSpE