问题标签 [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 投票
1 回答
831 浏览

c++ - Spirit Qi sequence parsing issues

I have some issues with parser writing with Spirit::Qi 2.4. I have a series of key-value pairs to parse in following format <key name>=<value>.

Key name can be [a-zA-Z0-9] and is always followed by = sign with no white-space between key name and = sign. Key name is also always preceded by at least one space.

Value can be almost any C expression (spaces are possible as well), with the exception of the expressions containing = char and code blocks { }.

At the end of the sequence of the key value pairs there's a { sign.

I struggle a lot with writing parser for this expression. Since the key name always is preceded by at least one space and followed by = and contains no spaces I defined it as

Value can be almost anything, but it can not contain = nor { chars, so I defined it as:

I thought about using look-ahead's like this to catch the value:

But it won't work, for some reason (seems like the ValueExpression greedily goes up to the = sign and "doesn't know" what to do from there). I have limited knowledge of LL parsers, so I'm not really sure what's cooking here. Is there any other way I could tackle this kind of sequence?

Here's example series:

Additional info: since this is a part of a much larger grammar I can't really solve this problem any other way than by a Spirit.Qi parser (like splitting by '=' and doing some custom parsing or something similar).

Edit:

I've created minimum working example here: http://ideone.com/kgYD8
(compiled under VS 2012 with boost 1.50, but should be fine on older setups as well).

0 投票
2 回答
523 浏览

c# - 如何删除字符串C#之间的一些文本

我有这样的文字:

LINE\r\n 5\r\n11DA3\r\n330\r\n2\r\n100 \r\nAcDbEntity\r\n 8\r\n0-FD\r\n 6\r\nHIDDEN\r\n100

看一下粗体字。我想替换 5\r\n 和 \r\n100 之间的文本。我试过这段代码:

但它不起作用。我的代码有问题吗?我确定 (\S+?) 是问题所在。有什么办法解决吗?

0 投票
4 回答
761 浏览

python - Python(Perl 类型)正则表达式前瞻/后瞻

考虑一个字符串s = "aa,bb11,22 , 33 , 44,cc , dd "

我想使用Python中的正则表达式模块s拆分为以下标记列表,这类似于 Perl 提供的功能:

  1. "aa,bb11"
  2. "22"
  3. "33"
  4. "44,cc , dd "

笔记:

  • 我想用逗号标记,但前提是这些逗号的两边都有数字。
  • 我要定位的这些“数字逗号”周围的任何(可选)空格都应该在结果中删除。可选的空格可能不止一个空格。
  • 任何其他空格都应保留在原始字符串中的显示位置。

到目前为止,我最好的尝试如下:

但这会打印:

这与我想要的很接近,因为我想要的 4 件事都包含在列表中。我可以通过并摆脱任何空字符串和任何仅包含空格/逗号的字符串,但我宁愿有一个单行正则表达式来为我完成所有这些。

有任何想法吗?

0 投票
3 回答
769 浏览

regex - 改进正则表达式以匹配包含至少 N 个字母的字母数字单词的 url

我已经按照下一个模式完成了一个正则表达式来匹配 url:

在哪里

part1:是常用词
part2:是带下划线的字母数字词,至少包含 2 个字母
part3:是数字词,有 1 到 10 位数字

例如,一个有效的 url 将是:

所以第 1 部分
= 新闻
第 2 部分 = my_news_title_200_is
第 3 部分 = 12345

我来到了这个:

用类表示:

但我想有更好的方式来表达 RE 模式的第 2 部分。

提前致谢。

0 投票
3 回答
249 浏览

java - Java 中的正则表达式环视构造:建议需要优化

我正在尝试在逗号分隔的列表中搜索文件名:

text.txt、temp_doc.doc、template.tmpl、empty.zip

我使用 Java 的正则表达式实现。输出要求如下:

  1. 只显示文件名而不是它们各自的扩展名
  2. 排除以“temp_”开头的文件

它应该看起来像:

文本

模板

空的

到目前为止,我已经设法编写或多或少令人满意的正则表达式来应对第一项任务:

我相信使其符合第二个要求的最佳选择是使用环视构造,但不确定如何编写可靠和优化的表达式。虽然下面的正则表达式似乎确实可以满足要求,但如果没有其他原因,它显然是一个有缺陷的解决方案,它依赖于显式的最大文件名长度。

PS我只研究了几天的正则表达式,所以请不要嘲笑这个新手风格的过于复杂的代码:)

0 投票
3 回答
6622 浏览

regex - 正则表达式匹配不以模式结尾的字符串?

我正在尝试形成一个正则表达式,它将匹配不以 DOT FOLLOWED BY NUMBER 结尾的字符串。

例如。

我想匹配前三个。
我尝试修改这篇文章,但它对我不起作用,因为数字可能有可变长度。

有人可以帮忙吗?

0 投票
2 回答
122 浏览

regex - 如何有效地匹配 Perl 正则表达式中已经匹配的内容?

我编写了一个正则表达式来验证必须遵守以下规则的字符串:

  1. 必须至少为一个字符
  2. 不得包含空白字符
  3. 第一个字符不能是标点符号
  4. 最后一个字母不能是标点符号
  5. 不能以标点符号结尾,后跟数字
  6. 所有其他字符可以是除/[:@#].

这是正则表达式:

看到有什么遗漏吗?不执行规则#5。我一直在通过编写如下代码来执行它:

有很多地方我必须这样做,所以我宁愿这一切都在一个正则表达式中完成。问题是:如何?什么正则表达式会拒绝诸如“foo,23”之类的值?

0 投票
1 回答
613 浏览

php - PHP preg_replace 崩溃。仅适用于正则表达式大师

你好吗?我会直奔主题。

我正在使用一个递归正则表达式,它基本上删除了单个或嵌套的 <blockquote> tags。我只需要删除普通的 <blockquote> ... </blockquote> 文本,无论是否嵌套,并留下这些之外的任何内容。

这个正则表达式完全按照我的意愿完成工作(注意使用前瞻和递归)

但它有一个大问题:当 $comment 很大(超过 3500 个字符长)时,apache 崩溃(我假设分段错误)。

我需要一个解决问题的方法,但要解决崩溃,使用更好的正则表达式自定义函数也可以完成这项工作。

如果您只是对如何删除嵌套的特定标签有想法,我们欢迎您。

先感谢您

0 投票
1 回答
4956 浏览

regex - 如何将 html 标签与 perl 正则表达式匹配?

鉴于下面的代码,我想匹配第一次form出现。我发现?!可以使用负前瞻来实现这一目标,但它不起作用。我的正则表达式有什么问题?

0 投票
1 回答
798 浏览

java - 如何读取同一 InputStream 上的不同数据组,为每个数据使用不同类型的 InputStream?

我需要以各种方式在 Java 中保存一些数据,到 a File,到 a String,到System.out... 最后我用 3 种方法做几乎相同的事情。OutputStream因此,我将它们更改为以 an作为参数的单个方法。我在单个 OutputStream 中写了一些东西,例如一些文本、一个序列化对象、另一个序列化对象、一些数字数据......

但现在我被困住了。我忽略了一个事实,即我无法区分所写的不同内容。我为数据创建了一个InputStream。我Scanner首先在该流上使用 a 来读取文本,然后尝试使用 ObjectInputStream 来读取序列化对象,但我得到一个EOFException.

我猜扫描仪会提前读取。如何防止扫描仪提前读取。
或者更确切地说,我如何使用适当的 InputStream 为每组数据读取每组数据。