Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式截断数_Regex - Fatal编程技术网

Regex 正则表达式截断数

Regex 正则表达式截断数,regex,Regex,我只想从此文本中提取订单号: magnalister Verarbeitung(亚马逊)市场最佳供应商: 306-3584295-9664328**业务订单**采购订单编号:?() 要过滤我得到这个正则表达式:[^./][a-zA-ZäÄöÖÜÜÜÜ(\):!\?\。*\n\r\n$]+ 奇怪的是,该命令从订单号中删除了最后一个数字 有人能帮忙吗?你可以试试这个正则表达式: Bestellnummer:\s([\d-]+) 然后将包含订单号的grap组1 正则表达式通过在创建包含任意数量的数字

我只想从此文本中提取订单号:

magnalister Verarbeitung(亚马逊)市场最佳供应商: 306-3584295-9664328**业务订单**采购订单编号:?()

要过滤我得到这个正则表达式:
[^./][a-zA-ZäÄöÖÜÜÜÜ(\):!\?\。*\n\r\n$]+

奇怪的是,该命令从订单号中删除了最后一个数字


有人能帮忙吗?

你可以试试这个正则表达式:

Bestellnummer:\s([\d-]+)
然后将包含
订单号的grap
组1


正则表达式通过在创建包含任意数量的数字和连字符的匹配组之前匹配“
bestellnumer:
”来工作。此组就是您想要的。

它从最后一位数字中删除的原因是,您的匹配从
[^./]
开始,它也将匹配一个数字。然后这部分
[a-zA-ZäÄöÖÜÜÜÜ(\):!\?\。*\n\n\r\n$]+
将匹配星号,但不匹配数字。所以你的比赛开始了,包括8号

8**业务订单**采购订单编号:?()

保留原始正则表达式,解决此问题的一种方法是不匹配第一部分中的数字
[^\d./]

您的正则表达式可以更紧凑一些,比如
[^\d./][a-zA-ZäÄöÖÜÜ():!?.$\s]+

请注意,您使用的是字符类,只需添加一次“\n”。你也不必逃避圆点、星号和问号

如果匹配是一个选项,您可以考虑使用<代码> \b\d { 3 }-\d { 7 }-\d { 7 }\ b< /代码>
或者像
\d+(?:-\d+{2}

这样更广泛的匹配,为什么不像
\d{3,}-\d{7,}-\d{7,}
\d{3}-\d{7}
?看,你想要的结果是什么?这个正则表达式甚至不能远程执行您想要的操作。我需要提取这个ordernumber并将其复制到sql表的另一列中。它唯一的工作原理就是使用regexp\u替换并将所有内容更新到neww列中。太棒了!这样工作:-)。但是我还有一个小问题。最后,换行。使用\n\n\r\n$有时会切断las号码。为什么呢?有解决办法吗?我已经更新了答案。这些字符位于字符类内,并不意味着在字符串末尾。$这里的字面意思是美元符号。您的角色类可以是
[^./][a-zA-ZäÄöÖÜÜ():!?*\r\n$]+
,谢谢您的更新。但是\r\n$有时会减少数字的最后一位。这里有一个示例文本:magnalister Verarbeitung(亚马逊)Marketplace Bestellnummer:304-2453412-8821115我想我无法重现这一点。你能看看这个例子吗?顺便问一下,你为什么不匹配而不是替换呢?不公平。不是出于我的目的。我必须寻找另一种方法来解决这个问题。反正是Thakns!