Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,这是我运行正则表达式的示例文本: DuraFlexHose Water 1/2" hex 300mm 30.00 我想包括所有内容,然后停在30.00 所以我想到的是类似于[^\d*\.\d*]*的东西,但这不起作用。什么查询可以帮助我实现这一点?请参阅 如果您不能使用任何CSV解析器,并且仅限于正则表达式,我建议使用2个正则表达式 这一个可以用来抓取从开始到第一个模式的可选空格的每个字符+数字++数字: 看 如果浮点值位于字符串末尾,请使用$锚定(字符串末尾): 看 请注意,[\s\s

这是我运行正则表达式的示例文本:

DuraFlexHose Water 1/2" hex    300mm 30.00
我想包括所有内容,然后停在
30.00

所以我想到的是类似于
[^\d*\.\d*]*
的东西,但这不起作用。什么查询可以帮助我实现这一点?

请参阅


如果您不能使用任何CSV解析器,并且仅限于正则表达式,我建议使用2个正则表达式

这一个可以用来抓取从开始到第一个模式的
可选空格的每个字符
+
数字
+
+
数字

如果浮点值位于字符串末尾,请使用
$
锚定(字符串末尾):

请注意,
[\s\s]
匹配任何符号,即使是换行符

正则表达式细分:

  • ^
    -字符串的开头
  • ([\s\s]*?)
    -(捕获组1)将捕获
    30.45
    中的
    3
    任何符号,0个或更多,否则将尽可能少)
  • \s*
    -0或更多空格,尽可能多(以便修剪组1)
  • \d+\.\d+
    -1个或多个数字后跟一个句点,后跟1个或多个数字
  • $
    -字符串结束
如果您计划匹配任何浮动,如
-.05
,则需要将
\d+.\d+
替换为
[+-]?\d*.\d+

以下是如何使用它:

var str='Duraflexhope Water 1/2“六角300mm 300.00';
var res=str.match(/^([\s\s]*?)\s*\d+\.\d+/);
如果(res!==null){
文件编写(res[1]);

}
你可以使用
^(+?)\b\d++.\d++
并使用捕获的group#1Thanks@anubhava,这是有效的,但我试图通过它来理解它。你不能按空格(或制表符)拆分字符串并连接回除最后一个元素以外的所有元素吗?你使用的语言是什么?展望未来,结果将是“更干净”": . 还是CSV?然后使用CSV reader.FYI:使用当前选择的解决方案,如果您的输入可以包含超过2位数的整数部分(例如,
DuraFlexhope Water 1/2“hex 300mm 300.00
)。
/.*(?=\d{2}\.\d{2})/
    .* matches any character (except newline)
        Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
    (?=\d{2}\.\d{2}) Positive Lookahead - Assert that the regex below can be matched
        \d{2} match a digit [0-9]
            Quantifier: {2} Exactly 2 times
        \. matches the character . literally
        \d{2} match a digit [0-9]
            Quantifier: {2} Exactly 2 times
^([\s\S]*?)\s*\d+\.\d+
^([\s\S]*?)\s*\d+\.\d+$