RegEx 用前两个值替换整个字符串
RegEx to replace entire string with first two values
我正在尝试想出一个正则表达式来仅用前两个值替换整个字符串。示例:
整串:AO SMITH 100108283 4500W/240V 旋入式元件,11
前两个值:AO SMITH
整个琴弦:BRA14X18HEBU / P11-042 / 310-470NL 黄铜 1/4 x 1/8 六角
衬套
前两个值:BRA14X18HEBU / P11-042
整个字符串:双孔管带 4" 008004EG 72E 4
前两个值:双孔管
注意事项是我想保留任何类型的特殊字符而不计算它们,例如“/”和“-”。我编写的当前代码没有,而是将新值完全留空。只有上面的第一个例子有效。
这是我目前得到的:
匹配值:
^(\w+) +(\w+).+$
新值:
一个选项可能是使用单个捕获组并在替换中使用它。
^(\w+(?:-\w+)?(?: +\/)? +\w+(?:-\w+)?).+
模式匹配:
^
字符串开头
(
捕获 组 1
\w+(?:-\w+)?
用可选部分匹配 1+ 个单词字符以匹配 -
和 1+ 个单词字符
(?: +\/)?
可选匹配 /
+\w+(?:-\w+)?
匹配 1+ 个单词字符和可选部分以匹配 -
和 1+ 个单词字符
)
关闭组 1
.+
匹配任何字符 1 次以上(该行的其余部分)
如果连字符可以超过 1 个,则可以使用 *
而不是 ?
输出
AO SMITH
BRA14X18HEBU / P11-042
TWO-HOLE PIPE
更广泛的匹配可以匹配单词之间的非单词字符
^(\w+(?:-\w+)*[\W\r\n]+\w+(?:-\w+)*).+
我正在尝试想出一个正则表达式来仅用前两个值替换整个字符串。示例:
整串:AO SMITH 100108283 4500W/240V 旋入式元件,11
前两个值:AO SMITH
整个琴弦:BRA14X18HEBU / P11-042 / 310-470NL 黄铜 1/4 x 1/8 六角 衬套
前两个值:BRA14X18HEBU / P11-042
整个字符串:双孔管带 4" 008004EG 72E 4
前两个值:双孔管
注意事项是我想保留任何类型的特殊字符而不计算它们,例如“/”和“-”。我编写的当前代码没有,而是将新值完全留空。只有上面的第一个例子有效。
这是我目前得到的:
匹配值:
^(\w+) +(\w+).+$
新值:
一个选项可能是使用单个捕获组并在替换中使用它。
^(\w+(?:-\w+)?(?: +\/)? +\w+(?:-\w+)?).+
模式匹配:
^
字符串开头(
捕获 组 1\w+(?:-\w+)?
用可选部分匹配 1+ 个单词字符以匹配-
和 1+ 个单词字符(?: +\/)?
可选匹配/
+\w+(?:-\w+)?
匹配 1+ 个单词字符和可选部分以匹配-
和 1+ 个单词字符
)
关闭组 1.+
匹配任何字符 1 次以上(该行的其余部分)
如果连字符可以超过 1 个,则可以使用 *
而不是 ?
输出
AO SMITH
BRA14X18HEBU / P11-042
TWO-HOLE PIPE
更广泛的匹配可以匹配单词之间的非单词字符
^(\w+(?:-\w+)*[\W\r\n]+\w+(?:-\w+)*).+