Я не знаю, как написать такое регулярное выражение. Начну с примера.Задача соответствия регулярных выражений
Мое плохое регулярное выражение:
(\d*),?(\d*\.?\d*)-?(\d*\.?\d*),?([0-1]?),?([0-1]?),?([^\/]*)
совпадениями, OK:
1,2-3,1,1,asdf
1,2-3,1,1
1,2-3,1
1,2-3
1,2
1
Но, к сожалению, это также будет соответствовать, и я не хочу, чтобы это было:
asdf
1,asdf
В идеале, мне хотелось бы что-то вроде - match, если предыдущие группы были сопоставлены.
Я знаю, что, возможно, положительный внешний вид должен использоваться, но если я не ошибаюсь, его следует использовать прямо перед каждой группой, за исключением 1-го, и регулярное выражение будет большим и вонючим после этого. Um, и это, вероятно, будет переменной длиной.
Есть ли элегантный способ сделать это?
EDIT
Я хочу, чтобы соответствовать все строки, приведенные ниже спичек, которые OK.
Я хотел был бы сопоставить \d*
с первой группой. Затем, если был матч с \d*
, а затем ,
, я хотел бы совместить (\d*\.?\d*)
со второй группой. После этого, если в первой группе было совпадение, а затем ,
и совпадение во второй группе, а затем -
Я хотел бы сопоставить другой (\d*\.?\d*)
... и т. Д. До конца Regex.
Не могли бы вы объяснить **, что ** вы хотите, чтобы он соответствовал, а не то, что у вас нет? – detunized 2010-12-08 07:51:18
да, чего вы пытаетесь достичь? Это поможет .. – 2010-12-08 07:55:55