Как заменить «35 лет» на «35 лет» с помощью регулярных выражений? - PullRequest
0 голосов
/ 04 апреля 2020

Этот вопрос касается поиска и замены.

У меня есть список, который выглядит следующим образом:

35 лет

74 года

40 лет

24 года

36 лет

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

35 лет

74 года

40 лет

24 года

36 лет

У меня есть для поиска:

\d+[y][r][s]

Что следует заменить строка выглядит? Поисковой системе Textmate требуются числа в результате, например, $ 1, которые представляют регулярное выражение в поле поиска.

Ответы [ 4 ]

3 голосов
/ 04 апреля 2020

Захватите с помощью:

 *(yrs)

и замените на:

 \1

Обратите внимание на начальные пробелы в сопоставлении и замене. Демоверсия здесь .

2 голосов
/ 04 апреля 2020

Вы можете использовать следующее регулярное выражение:

(\d+)\s*(yrs)

и заменить его на:

$1 $2

Это соответствует номеру в первой группе захвата (обозначен ()) и yrs во втором. Затем обе группы захвата заменяются пробелом. Пробелы не совпадают между двумя группами захвата и являются необязательными.

2 голосов
/ 04 апреля 2020

Нет никаких оснований для […] вокруг отдельных букв - никогда.

Для вашего выражения просто запишите цифры:

(\d+)\s?yrs

и замените их:

\1 yrs

Строго говоря, сопоставлять пробел (\s?) не нужно: если вы его не включите, те записи, которые уже содержат пробел, не будут сопоставлены, что хорошо: в конце концов, они уже правильные.

0 голосов
/ 05 апреля 2020

Если вы используете Java, вы можете сделать это следующим образом.

String str = "35yrs";
str = str.replaceAll("(\\d+)\\s*yrs)", "$1 yrs);

Изменяет годы с нулем или более пробелов и yrs на годы, за которыми следует один пробел, за которым следует yrs.

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