[英]RegEx Help. Using lookaround to insert periods inbetween spaced digits, but only if the digit isn't at the very end of a word
例子:
RP Distort2 1 0 0b.exe
AFakeFilename4 5 0 2 SEP2 5 63 8
A4 5 8 7 6 COM99 6 4 4 1
應該變成:
RP Distort2 1.0.0b.exe
AFakeFilename4 5.0.2 SEP2 5.63.8
A4 5.8.7.6 COM99 6.4.4.1
我現在的表達是:
(?<=\d) (?=\d)
Replacement: .
現在我的表達只能部分起作用。 它在所有間隔數字之間插入句點。 IE: RP Distort2 1 0 0b.exe
變成了RP Distort2.1.0.0b.exe
而它應該是RP Distort2 1.0.0b.exe
我不是 RegEx 向導,所以這讓我有點難過。 我也從另一個網站得到了我的表達 - 我知道它正在使用 lookaround 但我不完全理解 lookaround 的語法。
我在den4b Renamer (beta3)中使用這個表達式,它現在完全支持 lookaround。
我怎樣才能修改我的表情來實現我在這里需要的?
任何幫助都將不勝感激。
編輯:
我還想添加一個附加條件。 如果一個數字緊跟在單個v
之后 IE: TestSoftware v1 5 5
,這不應該算作“在單詞的末尾”(一個例外)並且結果應該是TestSoftware v1.5.5
。
將我的評論轉化為對未來讀者的回答。
Lookarounds 似乎沒有實現,你可以運行這個模式兩次:
\b(v?\d+) (\d)
在替換中使用$1.$2
這將從您問題中的示例字符串中進行您想要的替換
匹配和捕獲:
(?:(?<=\s)|(?<=\sv))(\d+)\s(?=\d)
代換:
$1.
(?:
- 非捕獲組的開始
(?<=\s)
- 空白的正面回顧|
- 或者(?<=\sv)
- 空白 + v
的正面回顧)
- 非捕獲組結束(\d+)\s
- 匹配並捕獲 1 個或多個數字后跟一個空格(?=\d)
- 數字的正面前瞻
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.