Регулярные выражения Java

#java #regex #string #whitespace #pipe

#java #регулярное выражение #строка #пробел #канал

Вопрос:

Я пробую некоторые шаблоны регулярных выражений, вот один, который я безуспешно пытался использовать: входная строка (min: 1, max: 100) не должна содержать начальных и завершающих пробелов или символов канала и не должна содержать символа канала внутри строки. В строке могут быть пробелы. Пока это то, что я придумал:

 "^([^\s^\|]*)([^\|] )([\Samp;amp;[^\|]]*)$"
  

Но этот шаблон считает начальные и конечные пробелы пробелами внутри строки.

Приветствуется любая помощь.

Комментарии:

1. Не могли бы вы опубликовать пример строки, которая должна совпадать, и другой, которая не должна совпадать?

2. Причина, по которой он «считает начальные и конечные пробелы пробелами внутри строки», заключается в использовании «*» в вашем первом и последнем терминах. Самым простым соответствием выражению «*» всегда является «» (т. Е. ничего), и поскольку ваш средний термин не исключает пробелов, программа сопоставления включит их. Я все еще попадаюсь на это. 🙁 «*» означает «действительно необязательно», а НЕ «не хочу»…

3. Для шаблона в моем исходном сообщении вот строка, которая соответствует, когда она не должна: » 5″

Ответ №1:

Ответ на ваш вопрос в том виде, в каком он написан:

 ^[^s|][^|] [^s|]$
  

Еще одна возможность добавить ограничение на длину:

 ^([^s]{1,100}|[^s|][^|]{1,98}[^s|])$
  

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

 s/^s (.*?)s /$1/
s/|//g
  

Комментарии:

1. Сет, я сначала попробовал твой шаблон, но он возвращает false для одного символа, например «5», «g»…. Шаблон также должен принимать одиночные символы. Чтобы уточнить, я пытаюсь удалить начальные и конечные пробелы и символы канала, а также символы канала внутри строки. Должно быть допустимо наличие пробелов в строке.

2. @Shaun: Ты пробовал мой второй шаблон? Это должно допускать одиночные символы.