В Java RegEx, как узнать разницу между .
(точкой) метасимвола и обычной точкой, которую мы используем в любом предложении. Как справиться с такой ситуацией для других метасимволов, например ( *
,+
, \d
, ...)
150
Если вы хотите, чтобы точка или другие символы со специальным значением в регулярных выражениях были нормальным символом, вы должны экранировать их обратной косой чертой. Поскольку регулярные выражения в Java являются обычными строками Java, вам необходимо экранировать саму обратную косую черту, поэтому вам нужно две обратные косые черты, например\\.
Решения, предложенные другими участниками, не работают для меня.
Но я нашел это:
чтобы избежать точки в Java регулярное выражение записи
[.]
источник
\\.
у меня не сработало:\.
жаловался, что.
не нужно убегать,\\.
заставлял думать, что это\.
вместо того.
,\\\.
и строитель сгенерировал ошибку,[.]
было единственным, что сработало.\\.
внутри строкового литерала вы\.
получаете то, что нужно регулярному выражению, чтобы увидеть точку как буквальную точку вместо сопоставления с любым символом.Регулярные выражения в стиле Perl (на которых более или менее основан механизм регулярных выражений Java) обрабатывают следующие символы как специальные символы:
.^$|*+?()[{\
имеют особое значение вне классов персонажей,]^-\
имеют особое значение внутри классов символов ([...]
).Таким образом, вам нужно избегать этих (и только тех) символов в зависимости от контекста (или, в случае классов символов, размещать их в положениях, где они не могут быть неверно истолкованы).
Излишне экранирование других символов может работать, но некоторые движки регулярных выражений будут воспринимать это как синтаксические ошибки, например
\_
, приведет к ошибке в .NET.Некоторые другие приведут к ложным результатам, например
\<
, интерпретируется как литерал<
в Perl, но вegrep
нем означает «границу слова».Поэтому пишите
-?\d+\.\d+\$
для соответствия1.50$
и-2.00$
т. Д. И[(){}[\]]
для класса символов, который соответствует всем видам скобок / скобок / скобок.Если вам нужно преобразовать строку ввода пользователя в форму, безопасную для регулярных выражений, используйте
java.util.regex.Pattern.quote
.Дальнейшее чтение: блог Яна Гойварта RegexGuru об экранировании метасимволов
источник
Избегайте специальных символов с обратной косой чертой.
\.
,\*
,\+
,\\d
, И так далее. Если вы не уверены, вы можете избежать любого не алфавитного символа, является ли он специальным или нет. См. Javadoc для java.util.regex.Pattern для получения дополнительной информации.источник
Вот код, который вы можете напрямую скопировать вставить:
А что, если по ошибке остаются пробелы до или после "." в таких случаях? Всегда лучше учесть и эти пробелы.
Здесь \\ s * здесь, чтобы рассмотреть пробелы и дать вам только необходимые разделенные строки.
источник
Я хотел сопоставить строку, которая заканчивается на ". *" Для этого мне пришлось использовать следующее:
Какая глупость, если вы думаете об этом: D Вот что это значит. В начале строки может быть любой символ ноль или более раз, за которым следует точка "." сопровождаемый звездой (*) в конце последовательности.
Надеюсь, это кому-нибудь пригодится. Спасибо за обратную косую черту Фабиану.
источник
"\\.\\*$"
тогда. Не нужно совпадать с началом строки, если это не имеет значения для вас.Если вы хотите закончить, проверьте, заканчивается ли ваше предложение ". ", Тогда вам нужно добавить [\. \ ] $ В конец вашего шаблона.
источник
Я делаю некоторый базовый массив в JGrasp и обнаружил, что с помощью метода доступа для массива char [] [], чтобы использовать ('.') Для размещения одной точки.
источник