我一生无法弄清楚如何否定一切,但我想用 REGEX 捕获什么。
我接近 [^(\d{4}-\d{3}-\d{3}]
但是在 powershell 中进行替换,输入为:1234-567-899 ABC 1W(23W) BLUE BIKE30 KIT
我得到:1234-567-8991(2330
而不是 1234-567-899
我一生无法弄清楚如何否定一切,但我想用 REGEX 捕获什么。
我接近 [^(\d{4}-\d{3}-\d{3}]
但是在 powershell 中进行替换,输入为:1234-567-899 ABC 1W(23W) BLUE BIKE30 KIT
我得到:1234-567-8991(2330
而不是 1234-567-899
您还可以使用正则表达式-replace
删除除您要保留的内容之外的所有内容。
在你的例子中
"1234-567-899 ABC 1W(23W) BLUE BIKE30 KIT" -replace '^([-\d]+).*', '$1'
会回来1234-567-899
<4-DIGITS>-<3-DIGITS>-<3-DIGITS>
要匹配字符串开头的模式后的任何文本,您可以使用
(?<=^\d{4}-\d{3}-\d{3}).*
请参阅正则表达式演示。细节:
(?<=^\d{4}-\d{3}-\d{3})
- 与紧接在其前面的位置相匹配的正向回溯
^
- 字符串的开始\d{4}
- 四位数-
- 一个连字符\d{3}-\d{3}
- 三位数, -
, 三位数.*
- 除换行符以外的任何 0 个或多个字符,尽可能多请尝试(?:^\d{4}-\d{3}-\d{3})(.*)$