2015-05-20 2 views
3

Как получить целое слово, которое имеет определенную его часть, которая соответствует регулярному выражению?Захватить полное слово регулярного выражения, если шаблон внутри него соответствует

Например, у меня есть текст ниже. Используя ^.[\.\?\!:;,]{2,}, я сопоставляю первые 3, но не последние. Последнее должно совпадать, но $, похоже, ничего не производит.

a!!!!!! 
n....... 
c..,;,;,, 

huhuhu.. 

Я хочу получить все строки, которые имеют появление определенных символов, равных или более чем в два раза. Я произвел вышеупомянутое регулярное выражение, но на Rubular оно соответствует только символам, а не всей строке. Использование^и $

Я прочитал несколько сообщений stackoverflow, похожих, но не совсем то, что я ищу.

+0

Можете ли вы дать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) о том, что вы хотите сделать? или код, который вы пробовали до сих пор? – Kasramvd

ответ

1

Измените регулярное выражение:

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

т.е. матч-больше характера, прежде чем 2 из этих специальных символов.

RegEx Demo

1

Если я понимаю хорошо вы пытаетесь соответствовать целую строку, которая содержит, по меньшей мере, один и тот же знак препинания в два раза:

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

Примечание: если ваша строка имеет символы новой строки, изменить .* в [\s\S]*

хитрость здесь:

([.?!:;,]) # captures the punct character in group 1 
\1   # refers to the character captured in group 1 
Смежные вопросы