簡體   English   中英

正則表達式用前兩個值替換整個字符串

[英]RegEx to replace entire string with first two values

我試圖想出一個正則表達式來用前兩個值替換整個字符串。 例子:

  • 整根琴弦:AO SMITH 100108283 4500W/240V 旋入式元件,11"

  • 前兩個值:AO SMITH

  • 整根弦:BRA14X18HEBU / P11-042 / 310-470NL BRASS 1/4 x 1/8 HEX BUSHING

  • 前兩個值:BRA14X18HEBU / P11-042

  • 整根弦:兩孔 PIPE 表帶 4" 008004EG 72E 4

  • 前兩個值:TWO-HOLE PIPE

需要注意的是,我想保留任何類型的特殊字符而不是計算它們,例如“/”和“-”。 我編寫的當前代碼沒有,而是將新值完全留空。 只有上面的第一個例子有效。

這是我到目前為止所得到的:

匹配值:

^(\w+) +(\w+).+$

新價值:

$1 $2

一種選擇是使用單個捕獲組並在替換中使用它。

^(\w+(?:-\w+)?(?: +\/)? +\w+(?:-\w+)?).+

模式匹配:

  • ^字符串開頭
  • (捕獲組 1
    • \w+(?:-\w+)? 將 1+ 個單詞字符與可選部分匹配以匹配-和 1+ 個單詞字符
    • (?: +\/)? 可選匹配/
    • +\w+(?:-\w+)? 將 1+ 個單詞字符與可選部分匹配以匹配-和 1+ 個單詞字符
  • )關閉第 1 組
  • .+匹配任何字符的 1+ 次(該行的 rest)

如果可以有超過 1 個連字符,您可以使用*代替?

正則表達式演示

Output

AO SMITH
BRA14X18HEBU / P11-042
TWO-HOLE PIPE

更廣泛的匹配可能是匹配單詞之間的非單詞字符

^(\w+(?:-\w+)*[\W\r\n]+\w+(?:-\w+)*).+

正則表達式演示

暫無
暫無

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

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