У меня есть эта строка:Regex получить текст до и после дефиса
"Common Waxbill - Estrilda astrild"
Как я могу написать 2 отдельные регулярные выражения для слов до и после дефиса? Выход я хочу это:
"Common Waxbill"
и
"Estrilda astrild"
У меня есть эта строка:Regex получить текст до и после дефиса
"Common Waxbill - Estrilda astrild"
Как я могу написать 2 отдельные регулярные выражения для слов до и после дефиса? Выход я хочу это:
"Common Waxbill"
и
"Estrilda astrild"
Если вы не можете использовать просмотровых задом, но ваша строка всегда находится в том же формате и cannout содержат больше, чем один дефис, вы могли бы использовать
^[^-]*[^ -]
для первого и \w[^-]*$
для второго (или [^ -][^-]*$
если первый не пробел после дефиса не обязательно слово-символ
немного по мотивам:. ^[^-]*[^ -]
соответствует началу строки (якорный ^
), за которым следует любое количество символов, которые являются не дефис и, наконец, символ, который не является дефем или пространством (только для xclude последнее место из совпадения).
[^ -][^-]*$
тот же подход, но наоборот, сначала соответствие символа тот ни пространства, ни дефис, за которым следует любое количество символов, которые не являются не дефис и, наконец, конец строки (анкерной $
). \w[^-]*$
в основном тот же, он использует более строгий \w
вместо [^ -]
. Это снова используется для исключения пробелов после дефиса из матча.
Это работает для меня. Для моих собственных знаний вы можете объяснить, как работает [^ -] [^ -]? –
Любопытно, как это могло бы работать, поскольку в первом была (небольшая) ошибка. Добавлено некоторое объяснение. –
Это довольно просто:
.*(?= -) # matches everything before " - "
(?<= -).* # matches everything after " - "
Смотрите этот учебник по lookaround assertions.
Когда я использовал код для сопоставления всего после получения этой ошибки: SyntaxError: Недопустимое регулярное выражение:/(? <= -). * /: Недействительная группа. Я использую расширение веб-скребка Chrome, которое использует js для своего регулярного выражения. –
Javascript не имеет lookbehinds. –
Почему бы вам не разделить строку с дефисом как разделителем? Нет необходимости в регулярном выражении. –
Что вы хотите достичь? –