регулярное выражение найти символы между "" - PullRequest
24 голосов
/ 08 марта 2010

Как мне сопоставить все символы между 2 указанными символами, скажем " " -> от sdfsf " 12asdf " sdf

Я хочу получить только 12asdf.

Ответы [ 4 ]

72 голосов
/ 08 марта 2010

Вы можете использовать следующий шаблон, чтобы получить все между " ", включая начальные и конечные пробелы:

"(.*?)"

или

"([^"]*)"

Если вы хотите захватить все, что находится между "", за исключением начальных и конечных пробелов, вы можете сделать:

"\s*(.*?)\s*"

или

"\s*([^"]*)\s*"
6 голосов
/ 11 мая 2010

Я предлагаю вам использовать

(?<=")(?:\\.|[^"\\])*(?=")

Это будет соответствовать только тому, что находится в кавычках (не самих кавычках), а также правильно обрабатывать экранированные кавычки внутри вашей строки.

Таким образом, в "She said, \"Hi!\"" оно будет соответствовать She said, \"Hi!\".

Если вы используете JavaScript или Ruby (который вы не упомянули) и, следовательно, не можете использовать lookbehind, используйте

"((?:\\.|[^"\\])*)"

и работа с группой захвата №. 1.

0 голосов
/ 15 мая 2015
[^"].*[^"]

Если вы введете: «Elie», это даст Elie (примечание: без кавычек)

0 голосов
/ 11 мая 2010

Вы можете использовать preg_match(/"([^"]*)"/,$input,$matches);.$matches[1] будет иметь то, что вы хотите.

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