问题标签 [alternation]

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 投票
2 回答
56 浏览

regex - 如何使用交替和替换来执行 Perl 正则表达式

我希望将“eAlpha eBeta eGamma”转换为“fAlpha fBeta fGamma”。当然,这只是更复杂替换的简化示例。

这是我的 perl 程序:

输出是

Perl 正则表达式似乎记得 $1 但不记得 $2。有没有办法使用正则表达式替换、全局替换和捕获 $1、$2 等变量?

  • 替代品永远不会超过 3 个,所以我可以分三步完成,但不希望这样做。

任何帮助,将不胜感激。

0 投票
3 回答
172 浏览

regex - 使 sed 正则表达式交替遵循从左到右的优先级?

我正在尝试使用正则表达式从 格式化一些二进制文件xxd -b,但为了简单地演示这一点,我将向您展示我期望发生的事情:

要删除的正则表达式:/1x|1.*/

文本:1x21y3333333313333->2

如果所有出现的1x都被删除,那么从第一个 1 开始出现的所有内容都应该被删除。发生了什么应该立即显而易见,但如果不是,请使用 this。关键是如果1x匹配,则应该中止模式的其余部分。

这是echo "AA" | xxd -b(的绑定转储AA\n)的输出:

我的目标是 1. 删除每个字节的第一个 0(ascii = 7 位)和 2. 删除字符串的其余部分,以便只保留实际的二进制文件。所以我把它输入sed 's/ 0//g'

添加第二步,sed -E 's/ 0| .*//g'

显然,我希望得到:

我尝试过但没有完成工作的事情:

  • xxd可以-g0合并列,但它保留每个字节中的第一个零(每个字符占用一个字节,而不是 7 位)
  • -r

与此同时,我将使用 perl,但这种行为让我感到困惑,也许这里有一个原因(教训)?

0 投票
4 回答
244 浏览

regex - 关于交替的 (a|b)* 示例,我很困惑,为什么结果集中有 ab、ba?

交替是关于联合,那么如果我们有 R={"a"} , S={"b"} ,那么 R|S 将是 {"a", "b"}。

为什么 ab, ba 包含在 (a|b)* 中?

我不明白为什么

在此处输入图像描述 在此处输入图像描述

正则表达式维基百科

我认为结果集应该是
(a|b)* = {Ɛ,"a", "b", "aa","bb", "aaa", "bbb", ...}

0 投票
2 回答
111 浏览

regex - <|> 在这个解析器中的顺序真的很重要吗?

星期一早上的 Haskell 帖子Parsing Part 2: Applicative Parsing说这个关于交替的regex-applicative

请注意,顺序很重要!如果我们把整数解析器放在第一位,我们就有麻烦了!如果遇到小数,整数解析器会贪婪地成功解析小数点之前的所有内容。我们将丢失小数点后的所有信息,或者更糟糕的是,解析失败。

从他们的 Git 存储库中引用这个函数:

但是,我无法弄清楚为什么会这样。当我更改decimalParser <|> integerParser为 时integerParser <|> decimalParser,它似乎仍然总是解析正确的东西(特别是,我这样做并运行stack test时,他们的测试仍然通过)。小数解析器必须有小数点,而整数解析器不能有小数点,所以它会在那里停止解析,导致小数点导致下一段解析失败,将我们回溯到小数解析器。似乎唯一不会发生这种情况的情况是,如果整个解析器的下一部分在此之后可以接受小数点(使其成为模棱两可的语法),但您仍然不会“丢失所有信息之后小数点,或更糟糕的是,解析失败”。我的推理是否正确并且那篇文章中有一个错误,或者是否有一个案例我没有看到他们的结果之一可能发生在哪里?

0 投票
0 回答
36 浏览

regex - 交替与布尔或有何不同?

我正在尝试编写一个正则表达式来读取基于此图的真实文字: 我发现此解决方案有效:正则表达式图

请注意通过交替分隔的两个部分:

当我尝试切换交替符号哪一侧的顺序时,它停止工作

这些部分和上面的完全一样,但是现在突然不行了。我是不是误会了 | (替代)符号有效吗?是不是和||不一样 (或)布尔表达式?

0 投票
2 回答
41 浏览

r - 如何交替使用向量列表(正则表达式)

是否可以将字符串向量解析为正则表达式中的替换元素?例如:

因此,如果我将“Animals”解析为正则表达式,它将导致:

它基本上应该像or1()rebus包中一样工作。

0 投票
4 回答
165 浏览

python - Python 打印交替

我需要用 Python 打印一个简单的棋盘,它必须有 8 行和 8 列。

这是我到目前为止所拥有的:

它打印如下内容:

但我想要这样的东西:

0 投票
1 回答
38 浏览

python - 我如何用一个正在克隆的盒子做一个正确的列表?

我不明白如何制作 1 个被克隆多次的盒子,其中每个第二个块都有不同的颜色。我想制作一个主框并对其进行整形,然后制作一个循环,在其中我多次克隆它,但我无法制作循环将它始终克隆到另一个克隆旁边。另外,当涉及到颜色时,我定义了一个列表,它给了我一个错误,因为这个变量没有被使用,我想使用它,所以每隔一个块就用另一种颜色。

如果有人知道这将是惊人的,这似乎给我带来了很多麻烦。

0 投票
1 回答
48 浏览

regex - 正则表达式中的转义括号与交替

我正在尝试编写一个 Reg 表达式来匹配单词列表中的任何单词,但在使用带括号的单词时遇到问题。

这是我到目前为止的 reg 表达式:

带有括号的单词(例如 Civil Services)会匹配,但不会匹配带有括号的单词(例如 Engineering Works (EW))。

我尝试过使用 \ 进行单转义和双转义 (\),但是在测试带有括号的单词时,这两个选项似乎都没有返回匹配项。

我怎样才能匹配带括号的单词?

0 投票
3 回答
59 浏览

regex - 正则表达式匹配包含两个字符串之一的路径

正则表达式匹配第三段中的两个字符串之一,即伪代码:

示例匹配

示例不匹配

我试过这个,但无济于事: