簡體   English   中英

正則表達式幫助。 使用環視在間隔數字之間插入句點,但前提是數字不在單詞的末尾

[英]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) - 數字的正面前瞻

演示

如果您的正則表達式支持 \K 功能,請嘗試\b\d+\K (?=\d) ,我稱之為窮人的變量回顧。 它會丟棄到該點的整個匹配項。

PCRE 正則表達式上的 Regex101, 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM