Я ищу шаблон, который соответствует всему до первого появления определенного символа, скажем ";" - точка с запятой .
Я написал это:
/^(.*);/
Но это на самом деле соответствует всему (включая точку с запятой) до последнего появления точки с запятой.
/^(.*?);/
также должен работать (это называется не жадным ), но[^;]*
лучше использовать данные ответы .\w+(?!([^]+;)|;)
но это не почему?.+(?!([^]+;)|;)
Ответы:
Тебе нужно
[^;]
Является классовым характером , она соответствует всем , кроме точки с запятой.Чтобы цитировать
perlre
справочную страницу:Это должно работать на большинстве диалектов регулярных выражений.
источник
foo=bar;baz=bax;bab=baf
и он соответствовал,bab=baf
даже если нет;
именно того, что мне нужно. Не уверен, почему это работает, хотя, если спецификация соответствует всему, кроме целевого символа ...Было бы;
Работа?
Оператор
?
lazy, поэтому регулярное выражение захватывает как можно меньше, прежде чем сопоставлять;
.источник
/^[^;]*/
[^;] Говорит, что соответствует чему угодно, кроме точки с запятой. Квадратные скобки - это оператор сопоставления наборов, по сути, он соответствует любому символу в этом наборе символов, а
^
в начале делает его обратным, поэтому сопоставляйте все, что не входит в этот набор.источник
Пытаться
/[^;]*/
Google
regex character classes
для деталей.источник
Пытаться
/[^;]*/
Это класс отрицательных персонажей .
источник
Образец текста:
Если, например, у нас есть образец текста выше, регулярное выражение
/(.*?\;)/
выдаст вам все до первого появления точки с запятой (;
), включая точку с запятой:"this is a test sentence;"
источник
;
символ, потому что это не регулярное выражение. Группировка также()
не требуется. Вы можете пойти с/.*?;/
?
персонаж делает матч ленивым (сопоставляя как можно меньше раз). Подумайте о регулярных выражениях, совпадающих с символами вплоть до первой точки с запятой, тогда они не идут дальше, потому что ониэто не решение регулярных выражений, но достаточно простое для описания вашей проблемы. Просто разбейте вашу строку и получите первый элемент из вашего массива.
вывод
источник
Это было очень полезно для меня, поскольку я пытался выяснить, как сопоставить все символы в теге xml, включая атрибуты. Я столкнулся с проблемой "соответствует все до конца" с:
но смог решить проблему с:
после прочтения этого поста. Спасибо всем.
источник
<!DOCTYPE>
теге. Так как парсер не смог с этим справиться.Это будет соответствовать до первого вхождения только в каждой строке и будет игнорировать последующие вхождения.
источник
"/^([^\/]*)\/$/"
работал для меня, чтобы получить только верхние «папки» из массива, как:источник
Действительно печально, что никто не дал вам правильный ответ ....
В регулярных выражениях? делает это не жадным. По умолчанию регулярное выражение будет соответствовать столько, сколько может (жадный)
Просто добавить? и это будет не жадным и соответствовать как можно меньше!
Удачи, надеюсь, это поможет.
источник
я нашел это
работает хорошо.
',' будучи здесь "разделителем".
источник