У меня есть что-то вроде этого:
option name [p1|p2|p3] | [p4]
, где опция и имя являются обязательными. опция должна точно совпадать, в то время как имя допустимо для любой комбинации символов ASCII. Любая строка после этих двух необязательна, если совпадает, и может появляться в любом порядке. Таким образом, оно должно соответствовать:
option name1 p1
option name1 p1 p4
option name1 p4 p1
Моя попытка регулярного выражения:
^(option)\s+(([a-zA-Z0-9]+))\s?(((p1|p2|p3)?)\s?((p4))?)\s?$
Это работает, если дополнительные строки предоставляются в определенном порядке, например:
option name1 p1 p4
option name1
option name1 p1
option name1 p4
, ноэтот не работает:
option name1 p4 p1
Есть ли способ написать регулярное выражение для поддержки любого порядка этих необязательных строк?
Edit : p1, p2,p3, p4 только для примера. Это может быть любая из предоставленных точных строк, например, foo, bar, baz.
Дополнительные пояснения:
имя может быть любой строкой. В идеальном сценарии он должен отличаться от foo, bar, baz и других параметров.