Regex найти символы между ""
Как я могу сопоставить все символы между двумя указанными символами, скажем " "
→ от sdfsf " 12asdf " sdf
Я хочу получить только 12asdf
.
Ответы
Ответ 1
Вы можете использовать следующий шаблон, чтобы получить все между " "
, включая передние и конечные пробелы:
"(.*?)"
или
"([^"]*)"
Если вы хотите захватить все, что угодно, между "", исключая пробелы в верхнем и нижнем бегу, которые вы можете сделать:
"\s*(.*?)\s*"
или
"\s*([^"]*)\s*"
Ответ 2
Я предлагаю вам использовать
(?<=")(?:\\.|[^"\\])*(?=")
Это будет соответствовать только тому, что находится между кавычками (а не самими кавычками), а также правильно обрабатывать экранированные кавычки внутри вашей строки.
Итак, в "She said, \"Hi!\""
он будет соответствовать She said, \"Hi!\"
.
Если вы используете JavaScript или Ruby (что вы не упомянули) и поэтому не можете использовать lookbehind, используйте
"((?:\\.|[^"\\])*)"
и работать с группой захвата №. 1.
Ответ 3
Вы можете использовать preg_match(/"([^"]*)"/,$input,$matches);
. $matches[1]
будет иметь то, что вы хотите.
Ответ 4
[^"].*[^"]
Если вы введете: "Elie", это даст Elie (примечание: без кавычек)