问题标签 [lookahead]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1784 浏览

regex - 正则表达式仅匹配最里面的分隔序列

我有一个字符串,其中包含由多个字符分隔的序列:<<>>. 我需要一个正则表达式来只给我最里面的序列。我已经尝试过前瞻,但它们似乎并没有按照我期望的方式工作。

这是一个测试字符串:

它应该返回:

正如您在第三个结果中看到的那样,我不能只使用/<<[^>]+>>/,因为字符串可能有一个分隔符字符,但不是连续两个字符。

我刚从试错中解脱出来。在我看来,这不应该这么复杂。

0 投票
2 回答
934 浏览

parsing - 解析需要大量前瞻的案例

大多数解析可以通过仅查看下一个符号(用于词法分析的字符,用于正确解析的标记)来完成,而其余大多数情况可以通过仅查看一个符号来处理。

是否有任何实际案例 - 对于实际使用的编程语言或数据格式 - 需要几个或无限多个前瞻(或等效回溯)符号?

0 投票
1 回答
1789 浏览

java - 使用正则表达式匹配非单词字符但不是笑脸

我有一个 Java 程序,它应该从字符串中删除所有非字母字符,除非它们是笑脸,例如 =) 或 =] 或 :P

很容易匹配相反的内容,[a-zA-Z ]|=\)|=\]|:P但我不知道如何否定这个表达式。由于我使用的是 String.replaceAll() 函数,因此它必须采用否定形式。

我相信部分问题可能来自微笑通常有 2 个字符长,而我一次只匹配 1 个字符?

有趣的是,replaceAll("(?![Tt])[Oo]","")它删除了所有出现的字母 O,即使是在单词“to”中。这是否意味着我的 replaceAll 函数不理解正则表达式前瞻?它不会抛出任何错误......

我最终使用

这非常混乱,但效果很好。The... quick! (brown) fox jump's over the[] lazy dog. :] =O ;X变成THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG :] =O ;X

编辑:忽略该修复,请参阅下面接受的答案。

0 投票
1 回答
699 浏览

java - 带有 LookAhead 的 Lucene 标记器

谁能指出我使用 LookAhead 实现 Lucene Tokenizer 的正确方向?

我正在使用雪球词干分析器,我希望能够获取城市名称的短语并防止它们被词干,因此“洛杉矶”将被设置为单个标记,而不是“洛杉矶”的两个标记和“天使”。

我还需要将与任何城市名称都不匹配的标记保留为一个单词。

有任何想法吗?

TIA

0 投票
2 回答
101 浏览

perl - 为什么我的嵌套环视在我的 Perl 替换中不能正常工作?

我有一个 Perl 替换,它将超链接转换为小写:

我希望替换忽略以散列开头的任何链接,例如我希望它将路径更改<a href="FooBar/Foo.bar">Foo Bar</a>为小写但如果遇到<a href="#Bar">Bar</a>.

嵌套前瞻以指示它跳过这些链接对我来说无法正常工作。这是我写的单行:

任何人都可以向我暗示我在这个替换中出了什么问题吗?它执行得很好,但没有做任何事情。

0 投票
2 回答
2134 浏览

regex - php preg_replace 正则表达式前瞻

我正在尝试使用 preg_replace 在我的 html 侧面替换 & 符号,但问题是它破坏了内联 javascript && 或 javascript url,如 ?page=test&id=1

现在我有这个代码,它可以工作

当空格在左边或右边时替换 & 号。当连续 2 个&符号(用于 javascript)或跟随 html 实体时,不要替换。

但我在这里发现它相当不需要的逻辑。如果它像测试和测试,它也不会替换&符号。

由于我不是正则表达式专家,这花了我很长时间,所以我想我再次在这里寻求帮助。

如果不在 javascript 脚本标签中,那么简单地替换所有 & 符号不是更好吗?我已经尝试过了,但没有真正的成功

有谁知道我如何存档?谢谢

0 投票
5 回答
5054 浏览

regex - 嵌套的正则表达式前瞻和后视

我在正则表达式中的嵌套“+”/“-”前瞻/后视时遇到问题。

假设我想更改'*'字符串中的'%'并且假设'\'转义下一个字符。(将正则表达式转换为 sql 之类的命令 ^^)。

所以字符串

  • '*test*'应改为'%test%',
  • '\\*test\\*'-> '\\%test\\%',但是
  • '\*test\*'并且'\\\*test\\\*'应该保持不变。

我试过:

与上面给出的示例中的“*”匹配的正确正则表达式是什么?

有什么区别(?<!\\(?=\\\\)*)\*(?=(?<!\\)(?=\\\\)*)\*或者如果这些本质上是错误的,那么具有这种视觉结构的正则表达式之间的区别是什么?

0 投票
7 回答
2105 浏览

java - 字符向前看

我将如何在 Java 中制作字符前瞻方法?我有一个文本文件(比方说 TextFile.txt),我需要它首先读取单个字符,识别它,如果它是一个特殊字符(如 { = + ; 等)将其作为 Y 类型的标记返回。如果字符不是特殊字符(如数字或字母),则应向前看是否有特殊字符或空格,当出现特殊字符时,程序应将该组字符作为X 类型的标记。如果程序读取一个数字,然后是另一个数字,然后是一个字母,它应该只返回 Z 类型的两个数字。

例如,在 TextFile.txt 中有以下文本:

程序将通读文件,看到一个“{”,将该标记返回为 Y,看到空格,忽略它,看到“t”,因为那不是特殊字符,向前看,看到另一个字母,直到它到达';',并返回'test'作为X类型的标记。程序应该读取'123',将其返回为Z,然后读取'test'并返回X。

我了解程序应该如何工作,但我不知道前瞻字符阅读器要使用什么。我查看了 Scanner 类,但它没有 nextChar() 的方法(这很有用)。

0 投票
1 回答
1409 浏览

c# - 带有反向引用的正则表达式正前瞻

我正在尝试构建一个具有语法突出显示的非常具体的编辑器。我已经用正则表达式制作了所有简单的东西,这很简单,但现在我想用正则表达式添加一些高级功能。

在这种情况下,我想知道是否在任何 JumpTo 命令上使用了定义的标签。
例子:

这里的目标是找到被JumpTo (一个或多个)引用的每个Define (Definexxx),可能在定义之前或之后。在另一个步骤中,我还想找到任何JumpTo未引用的任何Define

我已经尝试使用表达式“ Define(?<tag>\d+)(?=JumpTo\k<tag>) ”进行积极的前瞻。我希望它会找到“ Define1 ”,但它没有(无论有没有多行选项)。

这是否可以一步完成正则表达式,还是我应该放弃这个想法而只考虑两步方法?

0 投票
3 回答
226 浏览

php - 正则表达式之间进行选择同时忽略任何 <> 中的所有文本

我有以下两种类型的文本:

类型一:

类型二:

我正在使用 php 和preg_match_all. 我需要一个可以从上面返回一号警官和二号警官的表达式。我使用公司官员< /div>作为第一个主播和< /div>第二个主播,但我无法在所有桌子上的胡言乱语中找到 Keith Dennis。

如何在anchor1 和anchor2 之间返回文本,同时忽略任何括号内的所有文本<>

我看到了这些线程,但无法使他们的解决方案对我有用: RegEx:提取所有内容,直到 X 不在两个大括号之间

一切,但 [ 和 ] 之间的一切