Как я могу сопоставить все символы между двумя указанными символами, скажем " " → от 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 (примечание: без кавычек)