2016-03-08 2 views
0

Я пытаюсь выяснить, как сделать регулярное выражение, которое найдет X экземпляров определенного символа в абзаце/строке. Он будет содержать символы новой строки, а символы не будут последовательно. Я чувствую, что это должно быть очень просто, но я не могу понять это (и поиск в Интернете, я могу только найти решения, которые захватывают один и тот же символ подряд).Regex, чтобы найти 10+ символов персонажа

К сожалению, это РЕЖИМ.

+1

* Это должно быть регулярное выражение *, которое заставляет вас ...? –

+0

Я пробовал что-то по строкам (.? A.?) {10,}, которое ищет букву с 10 до неограниченного времени. Но, похоже, это не работает правильно, а. В любом случае символ не включает символы перевода строки. Большинство людей ищут одного и того же персонажа подряд, поэтому поиск по этой проблеме не принесет больших результатов. –

+0

Попробуйте что-то вроде этого: (?: T (?:. * | \ N)?) {10,} (предполагая, что T - это символ в строке, которую вы ищете) –

ответ

0

Если регулярное выражение двигатель выбора поддерживает встроенные модификаторы, вы можете использовать

(?s)^[^X]*(?:X[^X]*){10} 
  • (?s) является модификатором для режима SingleLine (точка соответствует новой строки)
  • ^ является якорем для начала строка
  • [^X]* соответствует всем, что не является X, от нуля до неограниченного времени
  • (?:X[^X]*){10} соответствует X f окутывается 0 или более не Xs, 10 раз

Предполагая, что персонаж, который вы хотите, X - u может просто заменить его, как вам нравится. Я использовал отрицание класса [^X] соображения производительности, так как это быстрее, чем любой .* или .*?

См https://regex101.com/r/tW8tH4/1 для демонстрации.

+0

Спасибо за это. Из любопытства, есть ли способ сделать это применимым ко всему слову? –

+0

@AKirby Да, есть - '(? S) ^. *? (?: test. *?) {10}' или '(? S) ^. *? (?: \ Btest \ b. *?) {10} 'в зависимости от того, как вы будете обращаться, если вы хотите совместить' abctestxyz' (первый) или только 'abc test xyz' (второй). Примите мой ответ, если он соответствует вашим потребностям. –

Смежные вопросы