У меня есть три регулярных выражений, один из каждых должны соответствовать их модели, но сейчас они совпадают больше, чем их собственная скороговорка:Проблем с регулярными выражениями матча, слишком много матчей
1. Input: test 1-2-22
regex ^([a-z|A-Z|\s]*)(\d*)-(\d*)-(\d*)$
I want to capture "test", "1", "2" and "22" in groups
2. Input: ooi 4-11-58 test^two^ one 1 two
regex ^([a-z|A-Z|\s]*)(\d*)-(\d*)-(\d*)(.+)$
I want to capture "ooi", "4", "11", "58", "test^two^ one 1 two" in groups
3. Input: one two three 3-11 four and five T1 F
regex ^([a-z|A-Z|\s]*)(\d*)-(\d*)(.+)$
I want to capture "one two three", "3", "11", "four and five T1 F" in groups
Я применяющим каждый регулярное выражение на каждая входная строка, и она должна пройти только одну из них.
Теперь случается, что регулярное выражение 1 соответствует как для 2, так и для 3 и регулярное выражение 2 соответствует одному и каждому из них друг с другом.
Как я могу исправить регулярные выражения, чтобы каждый соответствовал только их собственному шаблону?
Почему вы используете '^' перед регулярным выражением? Разве это не отрицает следующее выражение (в скобках)? – yasen
@yasen Нет, это означает, что «начинается с». –
'[a | b]' будет соответствовать 'a',' | ',' b'. Не используйте '' 'inside' [...]', если вы не хотите, чтобы он также соответствовал '|'. – Pshemo