- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
以下量词在场景、速度等方面有何不同。
?
、??
和 ?+
都匹配 0 或 1 次。*
, *?和
*+` 都匹配0 次或更多次。+
、+?
和 ++
都匹配1 次或多次。?
、*
和 +
是贪心。??
、*?
和 +?
是不情愿/懒惰。 ?+
、*+
和 ++
是占有性。谁能帮助我理解这些术语的含义?为什么同一份工作的每个量词有三种变体?
最佳答案
取字符串
aaaab
并查看以下正则表达式如何匹配它:
Regex Submatches
group 1 group 2 group3
(a?)(a*)(ab) a aa ab
(a??)(a*)(ab) aaa ab
(a?+)(a*)(ab) a aa ab
(a*)(a?)(ab) aaa ab
(a*?)(a?)(ab) aa a ab
(a*+)(a?)(ab) aaaa <Match fails!>
(a+)(a*)(ab) aaa ab
(a+?)(a*)(ab) a aa ab
(a++)(a*)(ab) aaaa <Match fails!>
解释:
a?
尝试匹配一个 a
,但如果整个匹配成功所必需的话,它准备不匹配任何内容。a??
尝试不匹配任何内容,但它已准备好匹配一个 a
,如果这是整个匹配成功所必需的。a?+
尝试匹配一个 a
。如果它能做到这一点,它不会退缩到不匹配任何东西,如果这对整个匹配成功是必要的。如果它无法匹配 a
,那么它很乐意不匹配任何内容。a*
尝试匹配尽可能多的 a
,但它准备匹配较少的 a
,如果是的话,甚至不匹配整场比赛取得成功所必需的。a*?
尝试不匹配任何内容,但它准备匹配尽可能多的 a
以使整个匹配成功,但不是更多。a*+
尝试匹配尽可能多的 a
。如果它能做到这一点,它将不会后退以匹配更少的a
,如果这对于整个匹配成功是必要的。如果它连一个 a
都不能匹配,那么它很乐意什么都不匹配。a+
尝试匹配尽可能多的 a
,但它准备匹配较少的 a
(但至少是一个)如果这是整场比赛成功所必需的。a+?
尝试只匹配一个 a
,但它准备匹配尽可能多的 a
整场比赛成功,但不会更多。a++
尝试匹配尽可能多的 a
。如果它能做到这一点,它将不会后退以匹配更少的a
,如果这对于整个匹配成功是必要的。如果它甚至无法匹配单个 a
,则正则表达式失败。关于ruby - 懒惰、贪婪和所有格量词之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345941/
我是正则表达式的新手,我正在浏览 the regex quantifier section .我对 * 量词有疑问。下面是 * 量词的定义: X* - 没有找到或找到多个字母 X .* - 任何字符序
我想证明以下定理: Theorem Frobenius (A: Set) (q: Prop) (p: A -> Prop) : (q \/ forall x : A, p x) -> (foral
例子: /(?:Foo){0}bar/ 我在另一个答案中看到了类似的内容。起初我想“那应该是什么”,但后来,“好吧,有点消极的看法”,所以 Foo之前不允许 bar ,但这不起作用。 你可以看到这个
添加/删除“+”不会改变输出。但我也没有收到任何错误。 “+”在这里做什么? /.{3}+/g 最佳答案 “+”在这里无效,可能是你的意思 /(.{3})+/g 关于javascript - 正则表达
基本上我有以下字符串:http:/www.-woejfewiofjewow不允许匹配 我的正则表达式:http://(www\.[^-])?[^-].* (我用 regexr.com 来检查它..)
我的正则表达式以量词 * 结尾。但是我在字符串中几乎没有匹配项。我怎样才能让它仍然找到所有匹配项?我的正则表达式: ((CMD1|CMD2)+(?::|;)+.*) 测试字符串为"cmd1: test
关于Eloquent JavaScript这本书chapter 9: Regular Expressions在“解析 INI 文件”部分下有一个示例,其中包含一个我根本听不懂的正则表达式。作者正在尝试
假设我们有一个类型构造函数 f,它通过 DataKinds-promoted 对接受两种类型。 forall (f :: (ka, kb) -> *) 然后我可以实现一个函数 forward ,就像
有forAll量词返回一个检查所有测试用例是否通过的属性。有没有办法定义一个“存在”量词,它返回一个属性来检查它至少一个测试用例是否通过? 最佳答案 通过枚举测试存在会更可靠:SmallCheck ,
我可以知道以下代码的输出为:1,10,10 的原因吗?为什么不是这样:10, 10? var str="1, 100 or 1000?"; var patt1=/10?/g; document.wr
我要匹配模式的表达式 空格后跟(加法运算符或减法运算符) 例如:"+" 应该返回 True 我已经尝试在以下正则 exp 上使用 std::regex_match: "[+-]", "\\s[+-]"
最近在学习CodeQL,对于CodeQL就不介绍了,目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记,根据个人知识库笔记修改整理而来的,分享出来共同学习。个人觉得QL的语法比较反人类,至少与
我想不出我想使用 ?? 的情况在正则表达式中,但也许我想得还不够仔细。 最佳答案 也许是一个分隔符分隔的列表,并且您不想匹配任何终止分隔符。 ^((?:[^,]+,??)+),?$ 那将捕获 "a,b
当我尝试 Regex.Replace() 方法时失败。我该如何解决? Replace.Method (String, String, MatchEvaluator, RegexOptions) 我试试
正则表达式{n,m}量词: {n,m}量词可以重复前面匹配的字符n-m次,至少n次,最多m次。 语法结构: 构造函数方式: ?
当我声明这个新类型时: newtype ListScott a = ListScott { unconsScott :: (a -> ListScott a -> r) -> r -> r }
我是正则表达式的新手,我想找到“po”的所有实例及其变体(即“p.o. | p.o. | p o”)后跟“box”的变体,因为我很感兴趣在采购订单中,而不是在邮政信箱中。下面的代码不起作用,即使它后面
大家好。 我有以下结构和类, template struct Node { T DataMember; Node* Next; }; template class NCA {
在下面的代码中,如何让 Specs2 执行第一个测试? “print ones”测试在它应该失败的时候通过了。由于 new Scope,forAll() 部分中的代码未执行。 println 语句仅用
我是一名优秀的程序员,十分优秀!