0

ページ範囲に一致する正規表現を書きたいのですが、もっと複雑です!

次の文字列を一致させる必要があります。

1-20 : from No.1 page to No.20, 
1-20x2: from No.1 to No.20 and step is 2, so it'll print 10 pages
1-20a2: from No.1 to No.20, every 2 page printed to 1 paper
1-20x2a2:
1-20a2x3:
1,3-20a2x3,
1-20a2x3,30-35x2
1-20x3a2,30-25a2

私は正規表現を書いています:

^([0-9]*|[0-9]*-[1-9][0-9]*(x[1-9][0-9]*)?(a[1-9][0-9]*)?)(,([0-9]*|[0-9]*-[1-9][0-9]*(x[1-9][0-9]*)?(a[1-9][0-9]*)?))*$

ほぼすべての状況に対応できますが、「x」と「a」の順序を変更することはできません。

だから私がそれを修正するのを手伝ってください!ありがとう !

4

1 に答える 1

1

繰り返される x と a を検証せずに:

(?:(\d+)(,\d+)?-(\d+)([ax]\d+)?([ax]\d+)?)+

プログラミング言語の助けを借りて、これを大幅に簡素化できると考えました。

于 2013-06-04T04:16:26.740 に答える