精华内容
下载资源
问答
  • and左右两个表达式为True,即返回结果为True; B选项中, 在逻辑运算符中,其优先级not>and>or,即not True为False, False or False返回结果False; C选项中, not True返回结果False,F...
    正确答案: A,D 你的答案: B
    参考解析:
    
    本题考察的是逻辑运算符优先级的使用。
    A选项中,1<2返回结果 True,
    and左右两个表达式都为True,即返回结果为True;
    B选项中,
    在逻辑运算符中,其优先级为not>and>or,即not True为False,
    False or False返回结果为False;
    C选项中,
    not True返回结果为False,False and True返回结果为False;
    D选项中,-3 > -1结果为False,not False则为True。所以AD选项是正确的。
    

    在这里插入图片描述

    展开全文
  • 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类的用法详解(正则表达式)

     

    展开全文
  • el表达式 验证运算 结果 \${empty param.username } ${empty param.username }
    <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312" %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      	<title>el表达式</title>
      </head>
      
      <body>
    	<table boder=1>
    		<tr>
    			<td>验证运算</td>
    			<td>结果</td>
    		</tr>
    		<tr>
    			<td>\${empty param.username }</td>
    			<td>${empty param.username }</td>
    		</tr>
    	</table> 
    
      </body>
    </html>
    

    展开全文
  • 正则表达式

    2014-12-03 14:51:39
    {n, m} 匹配前一项至少n次,但是不能超过m次 {n, } 匹配前一项n次,或者多次 {n} 匹配前一项恰好n次 ? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1} + 匹配前一项1次或多次,等价于{1,} * 匹配前一...
  • 乍一看是一个恒等式,返回true也没错,但是要注意一点的是,赋值语句=左边必须是变量,如果是常量编译器会报错,如图:,但如果左边是变量之后就只是一个字符串表达式了,而不是boolean类型,所以也存在返回true和...

    题目代码化:

    package StringTest;
    
    public class Test {
    	public static void main(String[] args) {
    		System.out.println("test"=="test");//A
    		System.out.println("test"="test");//B
    		System.out.println("test".equals(new String("test")));//C
    		System.out.println("test"==(new String("test")));//D
    	}
    }
    
    

    答案:AC
    分析:

    • A: ==比较的两边的地址值,“test”在字符串常量池中时同一个对象,所以true
    • B:乍一看是一个恒等式,返回true也没错,但是要注意一点的是,赋值语句=左边必须是变量,如果是常量编译器会报错,如图:,但如果左边是变量之后就只是一个字符串表达式了,而不是boolean类型,所以也不存在返回true和false的问题了。
      在这里插入图片描述
    • C:equals方法比较的是两个字符串的内容,所以true。
    • D: ==右边在堆中new出来了一个新的对象,对象保存的是字符串常量池中test的地址,而此表达式本质是 字符串常量池中test的地址 == 堆中字符串对象的地址,所以false。
    展开全文
  • 进一步了解Python的基本概念:模块、对象、方法和函数的使用 第三章 程序流程控制 几个例题 一:编程判断某一年是否闰年 闰年:年份被4整除但不能被100整除,或者可以被400整除。 口诀:四年一闰,百年闰,四...
  • 将中缀表达式转换后缀表达式 遵循以下步骤: (1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2; (2) 从左至右扫描中缀表达式; (3) 遇到操作数时,将其压入S2; (4) 遇到运算符时,比较其与S1栈顶运算符的...
  • Python内置函数

    万次阅读 多人点赞 2019-05-10 15:10:36
    如果iterable的所有元素不为0、’’、False或者iterable为空,all(iterable)返回True,否则返回False; 注意:空元组、空列表返回值为True,这里要特别注意。 all(['a', 'b', 'c', 'd']) # 列表list,元素都不为...
  • 前端面试题

    万次阅读 多人点赞 2019-08-08 11:49:01
    前端面试题汇总 ... 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 21 ... 21 Quirks模式是什么?它和Standards模式有什么区别 21 div+css的布局较table布局有什么优点?...img的alt与title有何异同?...你...
  • 测试开发需要学习的知识结构

    万次阅读 多人点赞 2018-04-12 10:40:58
    2)a = flase, b = flase 3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必覆盖全部分支 条件覆盖要检查每个符合谓词的子表达式真和...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    1技术难度高 2工作量太大 不是必须的 1开发环境 2LLD 3单元测试工程师 4架构师(详细设计人员) 3外部测试: 使用验收测试的原因 1内部测试只能模拟用户使用却不能代替用户使用 2由于专业不同业务背景不同无法模拟...
  • In C arrays why is this true? a[5] == 5[a]

    千次阅读 2012-10-01 19:32:19
    原帖: http://stackoverflow.com/questions/381542/in-c-arrays-why-is-this-true-a5-5a ===================================================================================================================...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是可能的,如需进一步学习C#语言...
  • 表达式树 二叉树是表达式处理的常用工具,例如,a+b*(c-d)-e/f可以表示成如下所示的二叉树 其中,每个非叶子节点表示一个运算符,左子树是第一个运算数对应的表达式,右子树是第二个表达式对应的表达式。每个...
  • 以下表达式的运行结果是: [1&lt;2&lt;3,3&lt;2&lt;1] A.[true,true] B.[true,false] C.报错 D.其他 答案选: A 问题:什么js 1&lt;2&lt;3 true , 3&lt;2&lt;1 也 true?...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    2、要求的图如下,也可以自己构造图,但是需要注意的是,图不能是退化的单链表: 实验报告要求: 1、 按要求记录下图的类的完整实验代码; 2、 纪录你所使用的图; 3、 按要求记录下要求的输出...
  • 这里MDN已经有专门的的解释,却别与布尔值的true,对于表达式返回真值统称Truthy. Truthy(真值) 在 JavaScript 中,truthy(真值)指的是在布尔值上下文中,转换后的值真的值。 所有值都是真值,除非它们被...
  • 如果需要,非 Boolean 表达式也可以被转换 Boolean 值,但是要遵循下列规则: 所有的对象都被当作 true。 当且仅当字符串空时,该字符串被当作 false。 null 和 undefined 被当作 false。 当且仅当数字零时,...
  • Educoder Python表达式问题求解(一)

    千次阅读 2021-01-19 13:36:13
    1.请用print语句输出下列数学表达式的值,或实际问题的答案。 def print_(x): if type(x) == float: print("%.4f" % x) else: print(x) # ********** Begin ********** # #请在每一题的print语句内完成题目所需...
  • 布尔表达式和正则表达式Example 1: Simplify the given Boolean Expression ... 示例1:将给定的布尔表达式简化最小编号。 变量或文字。 (A+B). (A+B) (A + B)。 (A + B ) ABC + AB + ABC ABC + A B + AB C Answ...
  • 上周末参照书本写了个“计算器”的程序,其中最令我费解的就是“前序表达式”、“后续表达式”,好像记得老师在上课的时候讲过,估计当时也没听懂,看的稀里糊涂的,不过现在大概明白了……  在此仅做以笔记。 ...
  • Java笔试面试题整理第八波

    万次阅读 多人点赞 2016-06-14 11:07:41
    同样List也不能转化List。 3、变量初始化问题 对于成员变量: 对于 非final修饰 的类的 成员变量(包括static和非static) ,如果开发者没有给其赋初值,在编译时,JVM自动会给非final修饰的成员...
  • 表达式转化二叉树

    千次阅读 2016-04-30 15:56:03
     //检查T空,item非空  if (!item)  return ERROR;  if (T)  return ERROR;  //检查是否已经到了字符串尾  if (!(*item)) return OK;  //申请内存空间,指针置空  if (!(T = (BiTNode*)...
  • 正则表达式小记

    千次阅读 多人点赞 2019-08-07 21:18:21
    文章目录1. 使用正则很酷1.1 使用正则1.2 使用正则2. JS中正则表达式的创建方式3....在开发的过程中,我们使用正则表达式也可以正常工作,但是,如果有了正则表达式(Regular Expression)的话,那么...
  • 【MATLAB】MATLAB的基础知识

    千次阅读 多人点赞 2017-04-12 11:52:00
    它可以从你键入的关键字(即使这个关键字并是MATLAB的指令)列出所有相关的题材,和help相比,lookfor所覆盖的范围更宽,可查找到包含在某个主题中的所有词组或短语。 例 1 - 2 例如在命令窗口键入look...
  • WPF开发教程

    万次阅读 多人点赞 2019-07-02 23:13:20
    表达式致使属性系统具有硬编码的数据绑定、样式调整或继承,而是由框架内后面的层来提供这些功能。 属性系统还提供属性值的稀疏存储。因为对象可以有数十个(如果达到上百个)属性,并且大部分值处于其默认...
  • 布尔表达式

    2019-10-05 13:23:59
    答:每一个条件语句和循环语句都是基本于布尔条件,布尔条件的值为true或false. 3.什么是相等性运算符?什么是关系运算符?什么是逻辑运算符? 答:相等性运算符是等于“==”、和等于“!=”;关系运算符包括...
  • 正则表达式转NFA

    万次阅读 2014-03-25 19:58:28
    前面一节介绍了NFA,这里讲介绍如何将正则表达式转化等价的NFA。 1. 正则表达式的基本运算 正则表达式有三种基本的运算: 1) 连接(Concatenation), 例如 abc, 由a, b, c组成 2) 联合(Union), 例如 a|b|c, 表示a或者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,442
精华内容 18,576
关键字:

下列表达式不能为true的