регулярное выражение для поиска подстроки между специальными символами - PullRequest
0 голосов
/ 24 января 2011

Я сталкиваюсь с этой проблемой в Java.

У меня есть строки данных, которые содержат сущности, заключенные между & и ; Например,

&Text.ABC;, &Links.InsertSomething; 

Эти сущности могут быть чем угодно из имеющегося у нас файла ini.

Мне нужно найти эти строки во входной строке и удалить их. Во входной строке не может быть ни одного, ни одного, ни нескольких вхождений этих сущностей.

Я пытаюсь использовать регулярные выражения для сопоставления с образцом и не удается.

Может кто-нибудь предложить регулярное выражение для этой проблемы?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 24 января 2011

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

"&[A-Za-z]+(\\.[A-Za-z]+)*;"

Он начинается с совпадения символа &, за которым следуют одна или несколько букв (как прописных, так и строчных) ([A-Za-z]+).Затем он соответствует точке, за которой следуют одна или несколько букв (\\.[A-Za-z]+).Это может быть любое число, включая ноль.Наконец, он соответствует символу ;.

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

Pattern p = Pattern.compile("&[A-Za-z]+(\\.[A-Za-z]+)*;"); // java.util.regex.Pattern
String subject = "foo &Bar; baz\n";
String result = p.matcher(subject).replaceAll("");

Или просто

"foo &Bar; baz\n".replaceAll("&[A-Za-z]+(\\.[A-Za-z]+)*;", "");

удалить пробелы после совпавших токенов, вы можете использовать это:

"&[A-Za-z]+(\\.[A-Za-z]+)*;\\s*" // the "\\s*" matches any number of whitespace
1 голос
/ 24 января 2011

И есть хороший онлайн-тестер регулярных выражений, который использует библиотеку java regexp.

http://www.regexplanet.com/simple/index.html

0 голосов
/ 24 января 2011

Вы можете попробовать:

input=input.replaceAll("&[^.]+\\.[^;]+;(,\\s*&[^.]+\\.[^;]+;)*","");

Посмотреть

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