Код для обнаружения обратного sla sh символа в строке с помощью регулярных выражений не работает? - PullRequest
1 голос
/ 08 января 2020

Привет У меня есть регулярное выражение, которое пытается проверить наличие набора символов, включая back sla sh \. Однако это работает для большинства символов в наборе символов, кроме back sla sh. Любая идея, что не так.

Вот мой фрагмент кода.

import java.util.List;
import java.util.ArrayList;
import java.util.regex.Pattern;
public class Testing {  
    public static void main(String args[]) {        
       String checkCharactersRegex = "[a-zA-Z!\"£$%&*@\\-_=~#':;,<.>/?|']";
       Pattern pattern1 = Pattern.compile(checkCharactersRegex);
       List<String> msisdns = new ArrayList<>();
       msisdns.add("(089) \\ 636 48018");
       msisdns.forEach( val ->  System.out.println(pattern1.matcher(val).find()) );
    }

}

Вывод, если вы выполните выше,

false

Я ожидал бы, что это будет верно. Цени любую помощь

спасибо

Ответы [ 2 ]

3 голосов
/ 08 января 2020

Если вы хотите использовать backsla sh в качестве литерала, вы должны ввести \\\\, так как \ также является escape-символом в регулярных выражениях.

2 голосов
/ 08 января 2020

Используйте код ниже:

String checkCharactersRegex = "[a-zA-Z!\"£$%&*@\\\\-_=~#':;,<.>/?|']";

Результат https://ideone.com/6AeLiE

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