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]
匹配任何符号,即使是换行符
正则表达式细分:
-字符串的开头^
-(捕获组1)将捕获([\s\s]*?)
中的30.45
任何符号,0个或更多,否则将尽可能少)3
-0或更多空格,尽可能多(以便修剪组1)\s*
-1个或多个数字后跟一个句点,后跟1个或多个数字\d+\.\d+
-字符串结束$
-.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+$