- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在编写这个正则表达式时遇到了很多麻烦:
(?<=\s+|^\s*|\(\s*|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)
它在我的正则表达式编辑器 (Expresso) 和 .NET 环境中工作得很好,但在 Java 环境(使用 Eclipse Helios R2 的 JRE 1.6.0.25)中它不起作用,因为 Pattern.compile()
方法抛出“语法错误 U_REGEX_LOOK_BEHIND_LIMIT”异常。
那是因为背后的模式 (?<=\s+|^\s*|\(\s*|\.)
必须有一个定义的限制(据我所知,这里不允许使用无限制的量词,例如 *
和 +
)。
我也尝试以这种方式指定重复范围,但没有成功:
(?<=\s{0,1000}|^\s{0,1000}|\(\s{0,1000}|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)
那么,我怎样才能编写一个在 Java 环境下也能工作的相同正则表达式呢?我不敢相信这种常见情况没有解决方法......
最佳答案
请记住,向后查找只会向后查找所需的距离。例如,(?<=\s+)
如果前一个字符是空格,则满足;它不需要再往前看。
你的后视也是如此。如果它不是字符串的开头,并且前一个字符不是空格、左括号或句点,则没有必要再往前看。它相当于这样:
(?<=^|[\s(.])
你的前瞻可以用同样的方式压缩。如果它不是字符串的结尾,并且下一个字符不是空格、右括号或句点,则没有必要进一步查找:
(?=[\s).]|$)
所以最终的正则表达式是:
(?<=^|[\s(.])(?:item|item1|item2)(?=[\s).]|$)
关于java - 复杂的lookbehind中的无限量词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994153/
我是正则表达式的新手,我正在浏览 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 语句仅用
我是一名优秀的程序员,十分优秀!