Регулярное выражение - текст между двоеточиями - PullRequest
0 голосов
/ 13 октября 2009

У меня есть такая схема

<h1>
5/2009
<br/>
Question: This is the question
</h1>

Мне нравится получать первую часть после <br/> или всегда строку перед двоеточием :

-> Решение должно быть «Вопрос»

Внимание: это слово меняется - иногда его вопрос, а иногда может быть большой вопрос ...

Я пытался с <h1>(.{0,50}):(.{0,50}), но это возвращает много (также дата)

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

Большое спасибо.

Ответы [ 4 ]

2 голосов
/ 13 октября 2009

Попробуйте это:

<br/>([^:]+):
1 голос
/ 13 октября 2009

Подумайте, что вы имеете в виду, и переведите это на язык регулярных выражений. Как указал Гамбо, вы должны использовать [^:] вместо .; причина этого заключается в том, что вы ищете группы символов, которые не являются двоеточиями ([^:]), а не группы абсолютно любых символов [1] (.), в которых между ними есть двоеточия.

Каждый раз, когда вы обнаруживаете, что используете . с квантификатором в регулярном выражении, остановитесь и спросите себя, действительно ли вы подразумеваете «любой символ» или вы могли бы выразить свое значение более четко (и получить более точные результаты), используя символ класс вместо.

(Нежадные квантификаторы (.*?) также могут выполнять работу по получению правильных совпадений в подобных случаях, но классы символов по-прежнему являются более ясным выражением намерений для читателей-людей и повышают эффективность, избегая чрезмерного обратного отслеживания для машинных читателей). .)

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

1 голос
/ 13 октября 2009

Я считаю, что это будет работать:

<h1>.*?<br />([^:]+):(.*?)</h1>
0 голосов
/ 14 октября 2009

мой мозг затопляет. действительно спасибо всем, кто уже помог.

может быть, кто-то может попытаться помочь снова, это так важно для меня: S?

<ul>
<li>
07.05.2009:
<a href="#1">Test 1</a>
</li>
<li>
05.01.2009:
<a href="#2">Test 2</a>
</li>
</ul>

На этот раз мне нравится читать вторую часть. Лучше всего было бы, если бы я разделил оба в одном регулярном выражении ..

Итак: 1. 07.05.2009 2. Тест 1

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