我希望制作一个解析给定字符串中所有浮点数的正则表达式。问题是我需要忽略一个特例;以/
开头的浮点数我目前的正则表达式工作正常,但它并没有忽略完全浮动只是/
之后的数字 (?<!/)[-]?[0-9]*\.?[0-9]+
以下是一些样本:
提前致谢
答案 0 :(得分:2)
Lookbehind 排除(/
)在这里还不够,它很棘手,但你需要排除(0-9
,.
,{ {1}})以及(-
)后跟一个空格以匹配您指定的浮点数。
/
获取所需内容的另一种方法是匹配您不想要的上下文。匹配不需要的上下文后,在捕获组中放置您想要匹配的内容并访问该组以进行匹配。
(?<![0-9/.-]|/ )-?[0-9]*\.?[0-9]+
答案 1 :(得分:0)
在我看来,这是一个相当不错的Regex
问题。假设您要对任何replace
号码float
进行/
,不前面有regex
,则以下内容将起作用。这与您的原始(?:[a-z]*|\/.*)
所做的相反,但它可能更容易实现并且更易于阅读。
<强>正则表达式强>
1.25 some text /1.10 some more text
1 some different text
1.25 some text .012 some more text
-1.25 some text
/1.25
/you missed one 1.10
<强> Regex101 强>
测试数据
Java
我的str = str.replaceAll("(?:[a-z]*|\/.*)", "");
生锈了,但示例用法是:
{{1}}