首页 > 编程知识 正文

java数字正则表达式,双浮点运算计算器下载

时间:2023-05-04 07:24:04 阅读:143157 作者:1658

蝴蝶不高

使用 .而不是.d,使用[0-9]而不是.d来避免使用特定语言(如Java )出现问题。 无名氏感谢你从一开始就认识到了这一点。 比较简单的模式匹配浮点数是[ -]? (0-9) *[.]? [0-9]这是一致的。 请参见123123.456.456工作示例。 如果你也想和123 .一致的话,需要一个长一点的公式。 [ -]? (0-9) ) (.) )0-9) )? |[.][0-9] (为了更完整地说明这个模式,我看到了Pkeller的回答。 如果要包含非十进制数字,例如十六进制或八进制,请参阅如何检查字符串是否为数字。如果想验证输入是数字,应该像^[ -]那样使用^和$吗? (0-9) ) (.) )0-9) )? |[.][0-9]对于不规则正则表达式,在大多数现代语言、api、框架、库等中实现的“正则表达式”基于形式语言理论.但是,软件工程师认为这些实现是正式的因此,大多数正则表达式引擎彼此相似,但实际上没有标准。 因此,它在很大程度上取决于所使用的语言、API、框架或库。 (顺便说一下,为了减少混乱,很多人开始使用“雷吉”和“魅力铃”。 要解释这些增强的匹配语言,请参见Regex是否与正则表达式相同。 有关详细信息,请访问RexEgg.com。 尽管如此,大多数regex引擎(事实上,据我所知所有引擎)都可以接受。 …恐怕,逃跑有问题。 有些难以逃避的语言包含对regexes的支持,例如JavaScript。 对于没有转义的语言来说,转义可能是一个问题。 这是因为你基本上用一种语言用一种语言编码。 例如,如果要在字符串中包含反斜杠字符,请使用//createsasinglecharacterstring 3360 '' stringx="\ "; 但是,由于dqdddd使用作为转义,因此如果要匹配字符字符,则必须为regexe引擎转义,为Java转义。 //creates atwo-characterstring 3360 '/whenusedassassing在此示例中,反斜杠字符可能没有用正在编程的语言转义。 //willmostlikelyresultinan ' illegalescapecharacter ' errorstringwrongpattern='. '; //willresultinthestring '

.'StringcorrectPattern='\. '; 所有这些逃脱都令人困惑。 如果您的语言支持原始字符串,则需要使用它们来减少反斜杠的数量,但并不是所有语言都这样做。 最明显的是Java。 幸运的是,在某些时候,备选方案可以发挥作用。 StringcorrectPattern='[.] '; 作为正则引擎, .和[.]是完全相同的意思。 请注意,它不适用于任何情况,例如换行符n、方括号\[和反斜杠\\或[]。 关于一致数的评论(提示:这比想象的要难)和数字一致是其中之一,我觉得使用regex相当简单,让我们看看你的方法。 一张一张。 [- ]? 与可选的-或[0-9]*匹配的大于或等于0的连续数字 . 要与可选的. [0-9]*或更高序号的数字匹配,请首先使用字母速记。 [0-9]=d请注意,此数字容易受到上述转义问题的影响。 d使用以下内容,但请注意其含义与[0-9] . (相同)。 (实际上,在某些引擎上,d )如果仔细观察,您会发现图案的各个部分是可选的。该模式匹配0长度的字符串; 字符串只是或-或.这可能不是你想要的。 要解决此问题,首先使用最低要求字符串(可能是一位字符串)“锚定”正则表达式非常有用。 d现在尝试添加小数部分,但不适用于您认为可能的地方。 d . d*/*Thisisn'tquitecorrect.*/这仍然是以下值123 .更糟糕的是,我对这件事抱有恶意。 句点是可选的。 这意味着它们同时具有重复的类d和d*。 这实际上可能很危险,但是如果使用了错误的方法,请打开系统直到拒绝服务器攻击。 要解决此问题,必须将句点视为可选,而不是将其视为可选,并分隔重复字符类。 此外,整个十进制数必须更改为可选。 d (.d )? /*Better.But.*/现在好像好多了。 第一个数字串和第二个数字串之间需要句点,但有致命的缺点。 与. 123不一致是因为现在需要开头的数字。 这个其实很容易解决。 应该将数字的“十进制”部分视为字符串,而不是设置为选项。 1以上的数字。 这些数字的前缀可以使用. 0以上的数字作为前缀。 ((d*. d现在只添加一个徽标。 [ -]? (d ) )? d当然,这些斜线在Java中非常麻烦,所以我们应该

长格式字符类中替换:[+-]?([0-9]*[.])?[0-9]+匹配与验证这已经在评论中出现了几次,所以我要添加一个关于匹配与验证的增编。目标匹配就是在输入中找到一些内容(“大海捞针”)。目标验证以确保输入采用预期格式。zjdlf,根据他们的天性,只有匹配短信。给定一些输入,他们要么找到匹配的文本,要么找不到。但是,通过用锚标记“抓取”一个表达式到输入的开头和结尾(^和$),我们可以确保没有找到匹配,除非整个输入与表达式匹配,有效地使用regexes验证.上述正则表达式([+-]?([0-9]*[.])?[0-9]+)威尔匹配目标字符串中的一个或多个数字。因此,考虑到输入:apple 1.34 pear 7.98 version 1.2.3.4判罚将匹配1.34, 7.98, 1.2, .3和.4.要验证给定的输入是一个数字,而不是一个数字,请将表达式包装在锚标记中,将表达式“快照”到输入的开头和结尾:^[+-]?([0-9]*[.])?[0-9]+$这只在整个输入是浮点数的情况下才会找到匹配,而如果输入包含其他字符,则不会找到匹配。所以,给定输入1.2,我们会找到匹配的,但是apple 1.2 pear不会找到匹配的。注意,一些regex引擎有一个validate, isMatch或者类似的函数,它本质上执行我所描述的自动返回true如果找到匹配false如果没有找到匹配的。还请记住,某些引擎允许您设置更改^和$匹配行的开始/结束,而不是整个输入的开始/结束。这通常不是默认的,但是要注意这些标志。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。