REGEX - убирать вещи вокруг чего-то? - PullRequest
0 голосов
/ 27 июня 2011

У меня есть большой старый HTML-файл, заполненный вещами.

Где-то в этом файле есть строка вроде этой

<span class="xcomponent">pls do not delete me</span>

Мне нужно избавиться от вещей, но оставитьчто между ними.

Я использую Java, и я полагаю, что правильный подход - это регулярное выражение - у меня просто не хватает опыта с регулярным выражением, чтобы справиться с этим.

Еслиэто какая-то помощь, вот мой «удар в темноте».

.*?(<span class="xcomponent">.*?</span>).*?

Ответы [ 4 ]

1 голос
/ 27 июня 2011

Это то, что вы хотите:

Pattern p = Pattern.compile("<span class="xcomponent">(.*?)</span>");
Matcher m = p.matcher(html);
m.replaceAll("$1");
0 голосов
/ 27 июня 2011

Я полагаю, что строка всегда выглядит как

<Something>WHATYOU WANT</closeSomething>

, и вас это не волнует.Чем регулярное выражение выглядит так:

<.*>.*</.*>

С этой строкой вы просто используете matcher, чтобы убедиться, что строка содержит шаблон сверху.Теперь вы просто используете метод split и делите на каждую <и>

string.split("<|>")[2]

либо первую секунду, либо третью - это то, что вы хотели.Я не проверял, если не правильно, просто немного поиграй.

0 голосов
/ 27 июня 2011

Я пишу это из своей памяти, поэтому будут некоторые ошибки msalle:

Pattern p = Pattern.compile(".*?(<span class="xcomponent">pls do not delete me</span>).*");
Matcher m = p.matcher(yourLine);
if (matcher.matches()) { yourLine = matcher.group(1); }

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

0 голосов
/ 27 июня 2011
myString.replaceAll("<span class=\"xcomponent\">(.*?)</span>", "$1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...