2015-12-22 2 views
1

Я хочу совместить строку точной длины 3. Я использую следующее регулярное выражениеRegex точная длина цельной строки

("\\d?[A-Za-z]{2,3}\d?") 

Здесь строка может иметь 1 цифру либо в начале или в конце строки, или строка может иметь 3 letters.Is там какой-либо способ определить длину строки соответствия, как :

("(\\d?[A-Za-z]{2,3}\d?){3}") // it does not work 

У меня есть другое решение.

("(\\d[A-Za-z]{2})|([A-Za-z]{2}\\d)|([A-Za-z]{3})") 

Но я просто хочу знать, есть ли способ определить длину целой строки соответствия.

+0

Я не использую инструмент регулярных выражений. Я пишу java-программу в eclipse, где я использую регулярное выражение. –

+1

Можете ли вы использовать просмотр? '(? = ^. {3} $) \ d? [A-Za-z] {2,3} \ d?' Ваше регулярное выражение также похоже, что оно может свернуть до '[A-Za-z0-9] [ A-Za-Z] [A-Za-z0-9] '. – drf

+0

Я не могу использовать lookahead. Но рухнувшее регулярное выражение работает нормально. –

ответ

1

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

\b([a-zA-Z]{2}\d|\d[a-zA-Z]{2}|[a-zA-Z]{3})\b 

или

^([a-zA-Z]{2}\d|\d[a-zA-Z]{2}|[a-zA-Z]{3})$ 

на основе конкретного использования.

EDIT: исправлено регулярное выражение, соответствующее также 3 цифрам.

+0

Да, вы правы, но можем ли мы использовать первое решение ("\\ d? [A-Za-z] {2,3} \ d?") И определить его длину?потому что я не хочу использовать это решение, потому что в нем мы должны определить все условия, здесь мы имеем длину 3, но что, если длина больше. –

+0

Хм, я боюсь, что таким образом вы будете соответствовать также строкам длиной от 2 до 5, я не вижу, как это исправить. – LucaMus

+0

Итак, решение, которое вы предоставили, лучше всего по вашему мнению? –

3
^.{3}$ 

Если это не ваш ответ, вы должны указать его лучше. У вас есть нулевые решения не несколько. Что именно вы пытаетесь сопоставить. Приведите несколько примеров.

http://www.regexplanet.com/advanced/java/index.html

^(\d[a-zA-Z]{2}|[a-zA-Z]{2}\d|[a-zA-Z]{3})$ 

Если вы хотите, чтобы буквы и цифры вещь.

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

^(\ д [A-Za-Z] {2} | [A-Za-Z] {2} \ д | [A-Za-Z] {3}) \ S

Из комментариев:

Так что

^[^\s]{3}\s\d{7}\s.\d{6} 

? - '^' начало строки, '[^ \ s]' не пробел. «{3}» три из них. '\ s' - пространство. '\ d' цифра. '{7}' Семь из них. '\ s' - пространство. '' какой-то характер. '\ d' цифра. '{6}' из них.

Regex - это просто программный способ описания того, что вы ищете. Если вы можете правильно сформулировать вопрос о том, что вы хотите сопоставить, легко написать это непосредственно в регулярном выражении.

+0

Нет, он не работает. Я даю вам несколько примеров, на самом деле то, что я хочу найти, это что-то вроде этого: «WDC 1234567L123456» или «4YL 1001101L110100» или «GH4 1234567L123456». Раньше я использовал следующее регулярное выражение - ((\\ d? [A-Za-z] {2,3} \\ d?) \\ s \\ d {7} [AZ] {1} \\ d {6}), но это регулярное выражение также соответствовало строке типа «ZN 1234567L123456», поэтому я решил определить длину строки перед пробелом, но я не получил никакого решения, поэтому, наконец, я использовал ((\\ d [A-Za-z] { 2}) | ([A-Za-Z] {2} \\ г) | ([A-Za-Z] {3})) \\ ы \\ д {7} [AZ] {1} \\ д {6}. Он работает нормально, но я не хочу указывать все условия, кроме длины. –

+0

@DineshChoudhary Вы должны обновить свой исходный вопрос этими примерами. Таким образом, что они и какая часть вы хотели бы сопоставить. Путь более полезен, чем описывать то, что вы считаете нужным. – Tatarize

+0

Только важный вопрос, как вы знаете, когда раздел, который вы хотите совместить, закончился? После того, как у вас есть эти три персонажа, что происходит? Это пространство? Три непространственных символа, за которыми следует пробел? – Tatarize

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