0

我一生无法弄清楚如何否定一切,但我想用 REGEX 捕获什么。

我接近 [^(\d{4}-\d{3}-\d{3}]

但是在 powershell 中进行替换,输入为:1234-567-899 ABC 1W(23W) BLUE BIKE30 KIT

我得到:1234-567-8991(2330

而不是 1234-567-899

4

3 回答 3

1

您还可以使用正则表达式-replace删除除您要保留的内容之外的所有内容。

在你的例子中

"1234-567-899 ABC 1W(23W) BLUE BIKE30 KIT" -replace '^([-\d]+).*', '$1'

会回来1234-567-899

于 2020-08-28T08:51:25.900 回答
0

<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 个或多个字符,尽可能多
于 2020-08-28T08:25:00.663 回答
0

请尝试(?:^\d{4}-\d{3}-\d{3})(.*)$

于 2020-08-28T07:07:04.033 回答