Создать RegExr для строки - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно сгенерировать regExr для приведенного ниже шаблона String.

A: B: C: D

, где A должно содержатьтолько строки и B могут содержать как строку, так и цифры, а C должно быть строкой, а D - только цифрами.

Я создал RegExr сам и он работает.

[a-zA-Z]+(:)+[a-zA-Z1-9]+(:)+[a-zA-Z]+(:)+[1-9]+

Но есть ли лучший шаблон для шаблона, который я хочу, чтобы он был немного короче моего?Или мой в порядке?

Я использую Java8.

Ответы [ 6 ]

0 голосов
/ 18 мая 2018

Ваш RegEx только захватывает :.

Этот RegEx работает для "Hello: hel35a: ahelkj: 684579" и захватывает всю строку.

 ([A-Za-z]+:(?:[A-Za-z]|\d)+:[A-Za-z]+:\d+)
0 голосов
/ 18 мая 2018

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

Например, a:1a:b:0 будет соответствовать, но a:1a:b:0a нет, потому что у него есть a вend.

Для совпадения с цифрой 0-9 вы можете использовать \d, а для сопоставления с одним двоеточием - просто : без квантификатора + или группы захвата ()

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

обратите внимание на регистр нечувствительный к регистру /i в демо, чтобы использовать [a-z] вместо [A-Za-z]

\b[a-z]+:[a-z\d]+:[a-z]+:\d+\b

Java:

\\b[a-z]+:[a-z\\d]+:[a-z]+:\\d+\\b

0 голосов
/ 18 мая 2018

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

0 голосов
/ 18 мая 2018

Ваш код регулярного выражения выглядит вполне нормально, если вам нужно избегать 0 и _ , иначе вы можете использовать приведенные выше примеры.Если вы хотите передать его как параметр, попробуйте добавить его в строку, это будет более удобно (, что я еще не пробовал! ).

0 голосов
/ 18 мая 2018

Вы можете использовать \ d для цифр, и если вы не против принятия подчеркивания, вы также можете использовать \ w для [a-zA-Z].

Ваше регулярное выражение может стать:

[\w]+:[\w\d]+:[\w]+:[\d]+

0 голосов
/ 18 мая 2018

Используйте \d вместо 1-9 (если разрешен 0).

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