2015-03-16 4 views
0

Я хочу, чтобы соответствовать Property Name и Property value в строке нижеРегулярное выражение для поиска строк между специальными символами, используя QRegExp

#Property Name : Property Value

Property Name и Property Value одиночные/мульти сформулированное предложение с цифрами и пробелами только , В них нет специальных символов.

Я пробовал с (?<=#)(.*):(.*?), но он не работает. Я прочитал многие вопросы на этом веб-сайте и попробовал их, но никто, похоже, не работал.

Я ожидаю ответ использовать QRegExp (RegEx класс Qt) из qt4

ответ

1

ИМО это лучше:

^#\s*([^:]+?)\s*:\s*(.*?)\s*$

https://regex101.com/r/pW3wV4/3

See this, кстати, почему мое решение лучше (то же самое, что и reg, но больше тестовых случаев).

+0

Спасибо. Это тоже работает! Можете ли вы объяснить, почему ваше выражение лучше? Как я вижу, он заботится о ведущих и конечных пробелах, а также о других специальных символах. Это оно? – Sathish

+0

[вот примеры, доказывающие, почему мое регулярное выражение лучше] (https://regex101.com/r/pW3wV4/4). Дайте больше данных, чтобы их можно было еще отполировать. –

+0

Удивительный пример. Еще раз спасибо! Он охватывает все мои требования. – Sathish

1

Попробуйте следующее регулярное выражение

^#([a-zA-Z0-9 ]*) : ([a-zA-Z0-9 ]*)$ 

демо здесь: https://regex101.com/r/gS7rF5/2

+0

@Amen, Спасибо, все работает! Но я не знаю, почему '(? <= #) (. *): (. *)', Который работал в онлайн-тестировщике регулярных выражений, не работал для QRegExp. Есть идеи? – Sathish

+0

Я буду ждать некоторые другие ответы на вопрос какое-то время. – Sathish