我有這個正則運算式匹配任何列印頁面規范(例如:6, 1-6, 6:4, 10-20/3)
^([1-9]\d*)((?<=\d)[-]|[:]?)((?<=-|:)?[1-9]\d*)?(?:(?<=)([/]?))([1-9]\d*)?$
我有它以便它當前匹配:例如:2048-4096/100 , 15:10/3
但是,我的正則運算式也匹配5/3當/應該只跟在冒號或破折號之后,還有一些數字,比如2048-4096/100
在上述運算式中的空正回溯中,我嘗試了:
(?:(?<=[:|-]\d)([/]?))
但這會導致我的所有測驗失敗,從而導致沒有匹配項。我也試過,(?:(?<=[:|-]\d*)([/]?))但在后視中不允許使用量詞。
我可以在空的正面lookbehind 中放入什么以使其檢查:或-和數字是否在/之前?
uj5u.com熱心網友回復:
您可以使用
^([1-9]\d*)(?:([-:])([1-9]\d*)(?:(/)([1-9]\d*))?)?$
請參閱正則運算式演示。詳情:
^- 字串的開始([1-9]\d*)- 第 1 組:一個非零數字,然后是零個或多個數字(?:([-:])([1-9]\d*)(?:(/)([1-9]\d*))?)?- 一個可選的出現([-:])- 第 2 組:-或:([1-9]\d*)- 第 3 組:一個非零數字,然后是零個或多個數字(?:(/)([1-9]\d*))?- 一個可選的出現(/)- 第 4 組:/([1-9]\d*)- 第 5 組:一個非零數字,然后是零個或多個數字
$- 字串的結尾。
我保持所有組完好無損,但至少(/)組是多余的,因為模式固定為/.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316071.html
標籤:Python 正则表达式 regex-lookarounds
上一篇:如何繼續分組直到使用正則運算式行尾?評論中的regex101代碼
下一篇:根據條件更新多行
