如果里面的模式匹配,则抓取完整的正则表达式字

时间:2015-05-20 19:22:51

标签: javascript regex

如何检索具有与正则表达式匹配的特定部分的整个单词?

例如,我有以下文字。 使用<xsl:template match="pubDate"> <xsl:variable name="h" select="substring(., 18, 2)"/> <xsl:variable name="m" select="substring(., 21, 2)"/> <xsl:variable name="h12" select="($h + 11) mod 12 + 1"/> <xsl:variable name="am.pm" select="substring('AMPM', 1 + 2*(number($h) > 11), 2)"/> <xsl:value-of select="concat($h12, ':', $m, $am.pm)"/> </xsl:template> ,我匹配前3个,但不匹配最后一个。最后一个也应该匹配,但$似乎没有产生任何东西。

^.[\.\?\!:;,]{2,}

我希望获得出现某些字符等于或大于两次的所有字符串。我制作了前面提到的正则表达式,但在Rubular上它只匹配字符本身,而不是整个字符串。使用^和$

我已经阅读了一些类似的stackoverflow帖子,但不是我正在寻找的。

2 个答案:

答案 0 :(得分:1)

将正则表达式更改为:

/^.*[.?!:;,]{2,}/gm

即。在其中2个特殊字符之前匹配0个字符。

RegEx Demo

答案 1 :(得分:1)

如果我理解你正在尝试匹配包含至少相同标点字符的整个字符串两次:

^.*?([.?!:;,])\1.*

注意:如果您的字符串包含换行符,请将.*更改为[\s\S]*

诀窍在于:

([.?!:;,])   # captures the punct character in group 1
\1           # refers to the character captured in group 1