Ограничить количество слов с помощью регулярного выражения - PullRequest
2 голосов
/ 31 июля 2009

Регулярное выражение, которое вы дали: ^(?:\b\w+\b[\s\r\n]*){1,250}$ ограничение 250 слов несколькими строками работает, если в нем нет специальных символов.

Что мне делать, если мне нужно найти количество слов, которое также состоит из специальных символов? Примерно такой пример:

--> Hi! i need help with regular expression, please help me. <--

Ответы [ 4 ]

3 голосов
/ 03 августа 2009

Самый простой подход - сгруппировать символы слова и ограничить эти группы определенным диапазоном (1-250):

^\W*(\w+(\W+|$)){1,250}$
3 голосов
/ 03 августа 2009

Я не знаком с C #, поэтому опишу регулярное выражение.

Метод 1:

Вы в основном ищете это:

(\b[^\s]+\b){1,250}

В Java:

\s - любой символ пробела.

[^\s]+ - это последовательность непробельных символов.

\b является границей слова.

Вы можете перевести регулярное выражение в C #.

Метод 2:

Маркировать входной текст в слова с пробелами. В Java это делается:

String[] tokens = inputString.split("\\s+");

где регулярное выражение \s+

Теперь вы можете посчитать длину массива и реализовать свою логику, чтобы отклонить слова, превышающие 250.

Метод 3:

Определите шаблон для захвата пробелов в качестве «группы захвата».

(\s+)

Теперь вы можете подсчитать количество совпадений в вашем шаблоне, используя цикл while. По сути, это то же самое, что и в методе 2, но без создания массива токенов.

1 голос
/ 21 ноября 2013

Немного поздно, чтобы ответить, но ни одно из решений здесь не сработало:

^ ([A-Za-Z0-9] + [^ а-Za-z0-9] *) {1,8} $

где {1,8} определяет, сколько слов вам нужно

0 голосов
/ 31 июля 2009

Вы можете использовать квантификаторы {a,b} в любом выражении, например:

.{1,256}
[\d\w_?]{1,567}
(0x)?[0-9A-F]{1,}

Итак, в вашем случае вы можете использовать:

^(?:\b\w+\b[_!?\s\r\n]*){1,250}$

Где _!? может быть любым специальным символом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...