精华内容
下载资源
问答
  • Java数值范围正则表达式生成器 概括 以下是翻译为可与Java一起使用的模块。 用法 import com.mmatsubara.rangeregex.RangeRegex ; // … String regexStr = RangeRegex . regexForRange( 12 , 34 ); // nenerates...
  • 验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(....
  • C# 数值表达式计算器

    2019-03-03 17:16:10
    使用C#语言开发的计算器,可计算加减乘除,支持小数运算,自己编写,暂未发现bug,主要使用了栈,大家可以自己研究一下
  • 主要介绍了vue.js实现插入数值表达式的方法,结合实例形式分析了vue.js常见的3种插入数值实现方式,并总结了vue.js插值与表达式相关使用技巧,需要的朋友可以参考下
  • Java正则表达式

    千次阅读 2019-07-06 19:03:50
    java.util.regex程序包只包含用于实现Java正则表达式处理技术的两个类,分别名Pattern和Matcher。自然而然你会想到正则表达式由模式匹配(pattern matching)而成。java.lang还定义了一个新接口,它支持这些新的类...

    正则表达式基础

    参考书籍:精通正则表达式。

    Java正则表达式API

    java.util.regex程序包只包含用于实现Java正则表达式处理技术的两个类,分别名为PatternMatcher。自然而然你会想到正则表达式由模式匹配(pattern matching)而成。java.lang还定义了一个新接口,它支持这些新的类。在研究Patternt和Matcher之前,我们先快速浏览一下CharSequence这一新概念。另外,为方便起见String类为运行正则表达式匹配提供了一些新程序作为捷径

    CharSequence接口

    正则表达式是根据字符序列进行模式匹配的。虽然String对象封装了字符序列,但是它们并不是能够这样做的唯一对象。

    JDK 1.4定义了一个名为CharSequence的新接口,可描述特定不变的字符序列。该新接口是一个抽象(abstraction),它把字符序列从包含这些字符的具体实现(specific implementation)中分离出来。JDK 1.4对“年高德勋”的String和StringBuffer类进行了改进,用于实现CharSequence接口。新的CharBuffer类也实现了CharSequence。CharSequence接口也在字符集映射中投入了使用

    CharSequence定义的API十分简单。毕竟它没有花太多“笔墨”描述字符序列。

    package java.lang;
    public interface CharSequence
    {
        int length();
        char charAt (int index);
        public String toString();
        CharSequence subSequence (int start, int end);
    }

    CharSequence描述的每个字符序列通过length( )方法会返回某个长度值。通过调用charAt( )可以得到序列的各个字符,其中索引是期望的字符位置(desired character position)。字符位置从零到字符序列的长度之间,与我们熟悉的String.charAt( )基本一样。

    toString( )方法返回的String对象包括所描述的字符序列。这可能很有用,如打印字符序列。正如之前提过的,String现在实现了CharSequence。String和CharSequence同为不变的,因此如果CharSequence描述一个完整的String,那么CharSequence的toString( )方法返回的是潜在的String对象而不是副本。如果备份对象是StringBuffer或CharBuffer,系统将创建一个新的String保存字符序列的副本。

    最后通过调用subSequence( )方法会创建一个新的CharSequence描述子范围(subrange)。start和end的指定方式与String.substring( )的方式相同:start必须是序列的有效索引(valid index);end必须比start大,标志的是最末字符的索引加一。换句话说,start是起始索引(计算在内),end是结束索引(不计算在内)。

    CharSequence接口因为没有赋值方法(mutator method)看上去似乎是不变的,但是基本的实现对象可能不是不变的。CharSequence方法反映了基本对象的现状。如果状态改变,CharSequence方法返回的信息同样会发生变化。如何你依赖CharSequence保持稳定且不确认基础的实现,你可以调用toString( )方法,对字符序列拍个真实不变的快照。

    Pattern类

    Pattern类封装了正则表达式,它是你希望在目标字符序列中检索的模式。匹配正则表达式的代价可能非常高昂,因为可能排列数量巨大,尤其是模式反复应用的情况。大部分正则表达式处理器(包括Perl在内,在封装中)首先会编译表达式,然后利用编译好的表达式在输入中进行模式检测。

    在这一点上Java正则表达式程序包别无两样。Pattern类的实例是将一个编译好的正则表达式封装起来。让我们看看完整的Pattern API,看看它是如何使用的。记住,这并不是一个句法完整的类文件,它只中去掉了类主体的方法签名。

    package java.util.regex;
    public final class Pattern implements java.io.Serializable
    {
        public static final int UNIX_LINES
        public static final int CASE_INSENSITIVE
        public static final int COMMENTS
        public static final int MULTILINE
        public static final int DOTALL
        public static final int UNICODE_CASE
        public static final int CANON_EQ
        public static boolean matches (String regex, CharSequence input)
        public static Pattern compile (String regex)
        public static Pattern compile (String regex, int flags)
        public String pattern()
        public int flags()
        public String[] split (CharSequence input, int limit)
        public String[] split (CharSequence input)
        public Matcher matcher (CharSequence input)
    }

    上面所列的第一个方法matches( )是个公用程序。它可以进行完整的匹配操作,并根据正则表达式是否匹配整个的(entire)输入序列返回一个布尔值。这种方法很容易上手,因为你无须追踪任何对象;你要做的仅是调用一个简单的静态方法并测试结果。

    public boolean goodAnswer (String answer)
    {
    return (Pattern.matches ("[Yy]es|[Yy]|[Tt]rue", answer));
    }

    这种方法适用于默认设置尚可接受并且只需进行一次测试的情况。假如你要重复检查同一模式,假如你要找的模式是输入的子序列,又假如你要设置非默认选项,那么你应当创建一个新的Pattern对象并使用新对象的API方法。 

    需要注意的是Pattern类并没有public 构造函数。只有通过调用静态工厂方法才可以创建新的实例。compile( )的两个形式采用的都是正则表达式的String参数。返回的Pattern对象包含被转换成已编译内部形式的正则表达式。如果你提供的正则表达式形态异常,那么compile( )工厂方法会抛出java.util.regex.PatternSyntaxException(模式句法异常)。这是未经检查的异常,因此如果你对自己使用的正则表达式是否可行存在疑虑(例如它传递给你是一个变量),那么你可以把对compile( )的调用放到try/catch块中进行检测。

    compile( )的第二种形式接受标志有一个位掩码,这影响了正则表达式的默认编译。这些标志启用了可选的编译模式行为,例如如何处理边界或不区分大小写等。(除CANOB_EQ外)这些标志(flag)同样可由嵌入表达式内的子表达式启用。标志可以与布尔或(OR)表达式结合使用,如下所示:

    Pattern pattern = Pattern.compile ("[A-Z][a-zA-Z]*",
    Pattern.CASE_INSENSITIVE | Pattern.UNIX_LINES);

    Pattern类的实例是不变的,各个实例与对应的正则表达式绑定,无法修改。Pattern对象也是线程安全的,可被多个线程同时使用。

    Matcher类

    Matcher类为匹配字符序列的正则表达式模式提供了丰富的API。Matcher实例常常通过对Pattern对象调用matcher( )方法来创建的,它常常采用由该Pattern封装的正则表达式:

    Matcher类的实例是监控状态型对象,它们封装了与特定输入字符序列匹配的具体正则表达式。Matcher对象并不是线程安全的,因为它们在方法调用之间有保有内状态(hold internal state)。一个Matcher实例来自一个Pattern实例,Matcher对象的pattern( )返回的是向后引用(back reference),指向创建了Matcher的Pattern对象。Matcher对象可以重复使用,但是因其监控状态属性,为了开始新匹配操作它们必须处于已知状态。这可通过调用reset( )方法来实现,该方法在与匹配程序有关的CharSequence之前为模式匹配备好了对象。无参数的reset( )将使用上次为Matcher设置的CharSequence。如果你希望对新的字符序列进行匹配,那么你可以将一个新的CharSequence传递给reset( ),随后匹配将针对目标进行。例如,随着你读取各行的文件,你可以把它传递给reset( )。

    matches( ),如果整个(entire)字符序列匹配正则表达式的模式,则它返回true。反之如果模式匹配的只是子序列,方法将返回false。在文件中,这种方法用于选取恰好满足一定模式的行是非常有用的。这种行为(behavior)与作用于Pattern类的公用程序matches( )相同。

    lookingAt( )方法与matches( )相似,但是它不要求整个序列的模式匹配。如果正则表达式模式匹配字符序列的beginning(开头),则lookingAt( )返回true。lookingAt( )方法往往从序列的头部开始扫描。该方法的名字暗示了匹配程序正在“查看”目标是否以模式开头。如果返回为true,那么可以调用start( )、end( )和group( )方法匹配的子序列的范围(随后将给出更多关于这些程序的内容)。

    find( )方法运行的是与lookingAt( )相同类型的匹配操作,但是它会记住前一个匹配的位置并在之后重新开始扫描。从而允许了相继调用find( )对输入进行逐句比对,寻找嵌入的匹配。复位后第一次调用该方法,则扫描将从输入序列的首个字符开始。在随后调用中,它将从前一个匹配的子序列后面的第一个字符重新开始扫描。如各个调用来说,如果找到了模式将返回true;反之将返回false。通常你会使用find( )循环访问一些文本来查找其中所有匹配的模式。

    带位置参数的find( )会在给定的索引位置进行隐式复位并从该位置开始扫描。然后如果需要可以调用无参数的find( )扫描输入序列剩余的部分。

    一旦检查到匹配,你可以通过调用start( )和end( )确定匹配位于字符序列的什么位置。Start( )方法返回的是匹配序列首个字符的索引;end( )方法返回的值等于匹配序列最末字符的索引加一。这些返回值与CharSequence.subsequence( )的返回值一致,可直接用于提取匹配的子序列。

     

    CharSequence subseq; 
    if (matcher.find( )) 
    { 
    subseq = input.subSequence (matcher.start(), matcher.end( )); 
    }

    一些正则表达式可以匹配空字符串,这种情况下start( )和end( )将返回相同的值。只有当匹配之前已经过matches( )、lookingAt( )或检测find( )的检测,start( )和end( )返回的值才有意义。如果没有检测到匹配或最后的匹配尝试返回的是false,那么调用start( )或end( )将导致java.lang.IllegalStateException(Java语言非法状态异常)。为了了解带有group参数的start( )和end( ),我们首先需要知道表达式捕获组(expression capture group)。

    正则表达式可能包含称为捕获组(capture group)的子表达式,它们被小括号括了起来。在正则表达式的求值期间将保存匹配这些捕获组表达式的输入子序列。一旦完全匹配操作完成,这些保存的代码片断可通过确定相应的组号从Matcher对象上重新获取。捕获组可以嵌套使用,数量可以通过从左到右计算左括弧(开括号)得到。无论整个表达式是否有子组,它的捕获组总能记为组零(group zero)。例如,正则表达式A((B)(C(D)))可能有的捕获组编号如表5-3所示。

     这种分组句法存在异常事件。以(?开头的组是个纯的(pure)或说是无法捕获的组。它的值无法保存且它对无法计算捕获组编号。

    捕获组在正则表达式模式中的编号由groupCount( )方法返回。该值来自原始的Pattern对象,是不可变的。组号必须为正且小于groupCount( )返回的值。传递超出范围的组号将导致java.lang.IndexOutOfBoundsException(java语言索引出界异常)。

    可以将捕获组号传递给start( )和end( )来确定子序列是否匹配已知的捕获组子表达式。有可能出现这样一种情况,即整个表达式成功匹配但是有一个或多个的捕获组无法匹配。如果请求的捕获组当前没有设置则start( )和end( )方法的返回值将为-1。

    (正如之前看到的)你可以利用start( )和end( )返回的值从输入的CharSequence中提取出匹配的子序列,但是group( )方法为此提供了更简单的方式。调用带数字参数的group( )将返回一个字段,该字段是匹配特殊捕获组的子序列。如果你调用的group( )不含参数,则返回将是与整个正则表达式(组零)匹配的子序列。


    String match0 = input.subSequence (matcher.start(), matcher.end()).toString( );
    String match2 = input.subSequence (matcher.start (2), matcher.end (2)).toString( );
    上述代码与下列代码等效:
    String match0 = matcher.group( );
     String match2 = matcher.group(2);

    最后让我们看看Matcher对象解决修改字符序列的方法。正则表达式最常见的应用之一是查找并替换(search-and-replace)。这种应用使用replaceFirst( )和replaceAll( )可以轻轻松松就搞定。它们的行为方式是相同的,区别在于replaceFirst( )在找到第一个匹配后就会停止,而replaceAll( )将循环执行直到替换完所有的匹配。二者都带有String参数,String参数是用于替换输入字符序列中匹配模式的替换值(replacement value) 

    上文提过,捕获组在正则表达式内可以向后引用(back-reference)。它们也可以被你提供组replaceFirst( )或replaceAll( )的替换字符串引用。捕获组号通过添加美元符号$可嵌入替换字符串中。当替换字符串被替换成结果字符串时,每次出现的$g将被group( )返回的值代替。如果你想在替换字符串使用字面量(literal)美元符号,那么你必须在它前面加个反斜杠符号(\$)。如果想要传递反斜杠符号,你必须多加一个反斜杠(\\)。如果你想在捕获组引用后面跟上字面量的数值型数字,那么你可以用反斜杠将它们与组号分开,像这样:123$2\456。

    Matcher对象记住的状态信息位(the bits of state information)之一是追加位置(append position)。追加位置是用于记住输入字符序列的量,这些字符序列已经通过之前调用appendReplacement( )复制了出来。当调用appendReplacement( )时,将发生如下过程:
    1. 从输入中读取字符是从当前追加位置开始,读取的字符将被添加到已知的StringBuffer中。最后复制的字符就在匹配模式的首个字符之前。这个字符位于start( )返回的索引减一的位置。
    2. 如先前描述的,替换字符串被添加给StringBuffer并替换任何嵌入的捕获组引用。
    3. 追加位置更新成跟在匹配模式后面的字符的索引,这个索引是end( )返回的值。
    仅当前一个匹配操作成功(通常调用find( ))appendReplacement( )方法才能正常工作。如果前一个匹配返回的是false或在复位后立即调用该方法,你将得到一个“令人愉快的奖励”:java.lang.IllegalStateException(java语言非法状态异常)。

    String类的正则表达式方法

     
    package java.lang;
    public final class String
    implements java.io.Serializable, Comparable, CharSequence
    {
        // This is a partial API listing
        public boolean matches (String regex)
        public String [] split (String regex)
        public String [] split (String regex, int limit)
        public String replaceFirst (String regex, String replacement)
        public String replaceAll (String regex, String replacement)
    }

    正则表达式语句

    参考:Java Pattern类的用法详解(正则表达式)

     

    展开全文
  • 正则表达式匹配数值类型字符串

    千次阅读 2016-04-08 16:36:54
    匹配数值类型字符串的正则表达式 public class Test { public static void main(String[] args) { String reg = "^-?([1-9]\\d*|0)(\\.\\d+)?$"; System.out.println("123456789".matches(reg)); System.out....

    匹配数值类型字符串的正则表达式


    public class Test {
     public static void main(String[] args) {
      String reg = "^-?([1-9]\\d*|0)(\\.\\d+)?$";
      System.out.println("123456789".matches(reg));
      System.out.println("-123456789".matches(reg));
      System.out.println("123.3456789".matches(reg));
      System.out.println("-123.3344556677".matches(reg));
      System.out.println("0".matches(reg));
      System.out.println("-0".matches(reg));//唯一遗憾是-0也能匹配上,不想改了,改的话还要一个挺长的串
      System.out.println("0.0003".matches(reg));
      System.out.println("0.123456".matches(reg));
      System.out.println("-0.1345".matches(reg));
      System.out.println("-0.0003".matches(reg));
      System.out.println("--------------------");
      System.out.println("2016-12".matches(reg));
      System.out.println("1.3.3".matches(reg));
      System.out.println("00456".matches(reg));
      System.out.println("00.456".matches(reg));
      System.out.println("+456".matches(reg));
      System.out.println("-00.456".matches(reg));
     }
    }


    很全的一个帖子,关于正则表达式符号的解释: 正则表达式全部符号解释
    正则表达式(括号)、[中括号]、{大括号}的区别小结

    展开全文
  • 输入一个字符串形式的四运算表达式,如"1.0+2.1*(3+4)" 直接谈出结果,输入在文件底部,自己写的。思路是先把中缀表达式转成后缀表达式,然后根据后缀表达式建立一个栈求出结果
  • NumExpr:NumPy的快速数值表达式评估器 作者: David M. Cooke,Francesc Alted等。 维护者: 罗伯特·麦克劳德 接触: 网址: 说明文件: 特拉维斯CI: GitHub动作: PyPi: DOI: 阅读文档: 什么是...
  • 用的是elementUI 可以用@change ,@keyup.native, @keyup.enter.native ... ">请输入大于0的数值   numchange() { this.sjlxform.yxsj.FBL = this.sjlxform.yxsj.FBL.replace(/[^\d.]/g,'') },  

    用的是elementUI 可以用@change ,@keyup.native, @keyup.enter.native

            <el-form-item label="分 辨 率(米):">
              <el-input
                v-model="sjlxform.yxsj.FBL"
                @change="numchange"
                style="width:75%;margin-top:5px;display: inline-block;"
              ></el-input>
              <p style="font-size: 10px; color: red; ">请输入大于0的数值</p>
            </el-form-item>

     

        numchange() {
          this.sjlxform.yxsj.FBL = this.sjlxform.yxsj.FBL.replace(/[^\d.]/g,'')
        },

     

    展开全文
  • C++、VC、MFC 计算任意函数值、计算表达式、积分、线性方程组
  • C++、VC、MFC 计算任意函数值、计算表达式、积分、线性方程组 工具。不错的工具哦
  • groovy入门 第02章 数值表达式

    千次阅读 2014-07-29 09:41:45
    grails 数值表达式

    数值和表达式

    2.1数值

    支持整数和浮点数。

    整数是Integer的实例,浮点数是BigDecimal的实例。

    2.2表达式

    支持加、减、乘、除、求模运算,并且运算符可以被方法代替。

    5+3 可以表示为5.plus(3)  ,另外还有minus,multiply,devide,mod运算。

    特别需要注意的是,对非整数求模是错误的,比如15/3.0

    2.3运算符优先级

    运算符的优先级同Java的运算符优先级一致,此处不再赘述。

    2.4赋值

    在第一次使用某个变量是需要声明,def a 表示声明了该变量。

    标识符必须以数字字母组成,下划线按照字母看待,大小写敏感,保留字不能作为标识符。

    2.5自增自减运算符

    自增  i++

    自减  i --

    2.6对象引用

    def a=32   b=a

    2.7关系运算符和等于运算符

    5.compareTo(3)<=0

    (3.plus(5)).equals(8)==true

     

     

     

    展开全文
  • ORACLE 数值正则表达式

    2017-06-15 10:46:24
    --测试数值正则表达式 --整形正则 select val from test_regexp where regexp_like(val, '^(-?[0-9]+)$'); --浮点型正则 select val from test_regexp where regexp_like(val, '^(-?[0-9]+)\.[0-9]+$'); --...
  • 网上查阅的很多资料也有涉及到用正则表达式来校验数值(包含小数与负数),但很多都是不全的,比如 "-"、"12."都是可以的,所以自己动手写了一个,虽然不是最优的,但最起码能达到自己想要的效果。 /** * 校验字符...
  • 题设:实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"...其次,判断整数部分,其可以0-9
  • //当前数值 if(curValue>=endNum) //如果当前数值大于结束数值那么当前数值等于结束数值 curValue = endNum; if(curValue) //如果当前数值小于结束数值,并且小于10,就在前面加上一个字符‘0’ text.sourceText = ...
  • 利用堆栈计算表达式的值,如:3×5-2+3×8/2实现+、-、×、/、(、)运算
  • 用于Python,NumPy,PyTables,pandas,bcolz等的快速数值数组表达式求值程序
  • 表达式计算是实现程序设计语言的基本问题之一,也是...利用教科书表3.1给出的算符优先关系,实现对算术四混合运算表达式的求值,并仿照教科书的例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
  • 今天在解决一个小问题时,遇到解隐函数方程,中间涉及一个解的传递问题,才好好研究了一下 syms这个语句的一些语法规则,最终用vpa这个函数解决了符号表达式到double数值的转化。 syms是符号函数,符号变量的优点是...
  • C#判断字符串是否数字字符串

    千次阅读 2018-12-27 09:59:45
    我们可以在try语句块中试图将string类型的字符串变量转换int类型,如果该字符串不是数字字符串会抛出异常,这时在catch语句块中就能捕获异常。一旦发现异常,不是数字字符串。 我们可以以下三种方式将s...
  • C#正则表达式判断字符串是否为数值

    千次阅读 2012-04-27 17:19:01
    static void Main(string[] args) { bool res = isNumberic1("123.5"); Console.WriteLine(res); res = isNumberic1("5.0"); Console.WriteLine(res); res = isNumberic1("abc");...Console.WriteLine(r
  • Findstr使用正则表达式搜索文件中的文本模式。
  • ae万能弹性表达式

    2019-03-05 13:30:05
    ae万能表达式,谁用谁知道,具体用法就是在key帧的时候,按alt键在关键帧上,然后可以输入表达式,把表达式复制进去,具体前面3个参数调弹性数值
  • 数值区间正则表达式写法

    千次阅读 2010-02-04 09:21:25
    数值型正则在实际应用中还是比较多见的,如判读合法IP段,合法邮编和电话等等都属于数值型正则应用范畴。 一个正则误区是通过[0-128]来表示数值0-128的数值区间。正确的用法应该分为多个特殊情况,分别写出正则后用...
  • EL表达式比较字符串或是数字格式的数值是否相等,true,却不执行true时的代码。 示例:true 原因: 有可能是test="${ 1 == 1}(这里多个空格)",即大括号与双引号之间多了空格,这个时候,就不会打印true。 ...
  • 这个是利用栈求数值表达式的一个新版本,功能是最完善的一个。ps:版权所有。呵呵
  • 主要介绍了js动态拼接正则表达式的两种方法,需要的朋友可以参考下
  • 由于经常会用到matlab的原因,我们要经常使用数值积分。 然而,很多数值运算函数,比如数值积分函数(quad,quadgk,integral),都只能接受...于是我们要将符号表达式转化函数句柄。 matlab2009a以后的版本,提供了

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 332,715
精华内容 133,086
关键字:

则数值为9的表达式