Как записать два шаблона (если они есть) для двух групп, в которых строка содержит кавычки в regEx - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть разные строки, такие как следующие.

$1"First title" asdas 
$2"Second title" 
$"This is post three title"
"This is post four title"
$5 the post
"hello \" world"

Я хочу захватывать только те строки, которые начинаются с "$", и прикреплять к шаблонам postid и posttitle, если они существуют.Формат: $ {postid} "{posttitle}".Итак, я хочу совпадение, как показано ниже.

$1"First title" asdas (Should match: postid=1 and posttitle="First title")
$2"Second title" (Should match: postid=2 and posttitle="Second title")
$"Third title" (Should match: posttitle="Third title")
"This is post four title" (No match)
$5"" the post (Should match: postid=5)
$7 the post (No match)
$ asdasd (No match)
"hello \" world" (No match)

В настоящее время я получаю это регулярное выражение:

%\$(?P<postid>\d+)"(?P<posttitle>.*?)"+%u

Но оно соответствует только $ 1 «Первый заголовок», $ 2 «Второй заголовок»,и $ 5 "".

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы хотите, чтобы любая группа могла быть необязательной в вашем тексте, вам нужно использовать ?, чтобы они выглядели ноль или один раз.Это регулярное выражение должно работать для вас,

\$(?P<postid>\d+)?"(?P<posttitle>[^"]+)?"

Live Demo

...