Нужно регулярное выражение Java для соответствия подстроки с несколькими пробелами, только одна пунктуация - PullRequest
4 голосов
/ 03 мая 2010

Я хочу убедиться, что подстрока, которую я сопоставляю, содержит только одну возможную часть знаков препинания и столько пробелов, сколько необходимо.Это внутри гораздо более длинного REGEX, в настоящее время есть следующее:

[\ p {P}, \ s]

, но это будет соответствовать всем пунктуации и пробелам, так чтоон принимает:

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

Ответы [ 3 ]

9 голосов
/ 03 мая 2010

я хочу, чтобы он совпадал с любым количеством пробелов между строкой до и после строки, при этом допускается только один пунктуация

Попробуйте это:

\s*\p{P}\s*

Пояснение:

\s*   Match any amount of whitespace
\p{P} Match a single punctuation character
\s*   Match any amount of whitespace

Обратите внимание, что в строковых литералах Java обратная косая черта должна быть экранирована.

0 голосов
/ 05 мая 2010

Да, вы правы, это было излишним

должно быть

\s*(\p{P})?\s

в основном то же, что и вы, но должно соответствовать «одному возможному пункту», а не одному обязательному пунктуации. Были добавлены знаки плюс, чтобы показать, что это было частью более длинного регулярного выражения ...

0 голосов
/ 03 мая 2010

упс, я думаю, что нашел это сам - во всяком случае, кажется, что он работает с различными комбинациями пробела и пунктуации:

+(\s*)+(\p{P})?+(\s)+

с частями до и после знака плюс, являющегося соответствием остальной части строки.

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