标签: regular-language

正则表达式问题

语言0 m 1 n的正则表达式是什么,其中m + n是偶数?

regex regular-language

6
推荐指数
1
解决办法
295
查看次数

轻量级正则表达式优化

我有一个正则表达式,它是计算机程序的输出.它有类似的东西

(((2)|(9)))*
Run Code Online (Sandbox Code Playgroud)

人类毫无疑问会把它写成

[29]*
Run Code Online (Sandbox Code Playgroud)

所以我想要一个程序可以进行简单的转换,使正则表达式更具可读性.到目前为止,我一直在使用快速脚本

$r =~ s/\(([0-9])\)/$1/g;
$r =~ s/\(([0-9])\|([0-9])\)/[$1$2]/g;
$r =~ s/\(([0-9]|\[[0-9]+\])\)\*/$1*/g;
$r =~ s/\((\[[0-9]+\]\*)\)/$1/g;
$r =~ s/\|\(([^()]+)\)\|/|$1|/g;
Run Code Online (Sandbox Code Playgroud)

减少长度,但结果仍然包含像

(ba*b)|ba*c|ca*b|ca*c
Run Code Online (Sandbox Code Playgroud)

应简化为

[bc]a*[bc]
Run Code Online (Sandbox Code Playgroud)

我搜索了CPAN并找到了Regexp :: List,Regexp :: Assemble和Regexp :: Optimizer.前两个不适用,第三个有问题.首先,它不会通过它的测试,所以我不能使用它,除非我force install Regexp::Optimizer在cpan.其次,即使我这样做,它也会扼杀表达.


注意:除了[regex]之外,我还标记了这个[常规语言]因为正则表达式只使用连接,交替和Kleene星,所以它实际上是常规的.

regex perl regular-language

6
推荐指数
1
解决办法
276
查看次数

6
推荐指数
1
解决办法
2万
查看次数

需要有限自动机的正则表达式:偶数1和偶数0

我的问题听起来可能与你有所不同.

我是初学者,我正在学习有限自动机.我正在互联网上搜索下面给定机器的有限自动机的正则表达式.

在此输入图像描述

任何人都可以帮我写上述机器的"有限自动机的正则表达式"

任何帮助将不胜感激

finite-automata dfa computation-theory regular-language

6
推荐指数
1
解决办法
4万
查看次数

如何使用 DFA 正则表达式匹配器实现正则表达式断言/环视(即 \b 样式字边界)

我想在基于 DFA 的正则表达式匹配器中实现“词边界”匹配。有人能告诉我这是怎么做的吗?

提供一些背景知识,我目前正在使用“dk.brics.automaton”库,但它不支持断言(例如\b,词边界)。我需要使用基于 DFA 的引擎,因为我的主要目标实际上是确定正则表达式的等效性,而不是进行实际匹配。

此外,以下问题的答案似乎表明这是可能的: 基于 DFA 的正则表达式匹配 - 如何获取所有匹配?

“同样,我们通过向模拟器添加带有特殊指令的 epsilon 转换来管理它。如果断言通过,则状态指针继续,否则将被丢弃。”

然而,我不太明白这意味着什么。它是否暗示它只能使用一种特殊类型的 epsilon 转换来完成,该类型查看其端点并且只有在其端点满足断言时才能遍历,或者可以使用以某种方式配置的“正常”epsilon 转换来完成?如果我需要这些“特殊”类型的 epsilon 转换,那么如何确定这些转换(即转换为标准 DFA)?

非常感谢有关如何实际实现这一点的任何描述的指针。

java regex word-boundary dfa regular-language

5
推荐指数
1
解决办法
646
查看次数

是语言{0 ^ n 1 ^ n 0 ^ k | k!= n}上下文免费?

我相信这种语言不是上下文,因为PDA不可能比较2个0和1的相同长度的块,并且还记住它的长度以供以后使用.

不幸的是,我不知道如何证明它.

我尝试使用泵浦引理无济于事......

我还试图通过矛盾来假设语言是无上下文的,并且使用这样一个事实,即上下文无关语言与常规语言的交集也是无上下文的(通过找到一些神秘的常规语言L),并且令人惊讶(或者不是) ) - 我所有的努力都是徒劳的......

任何帮助,将不胜感激

computer-science context-free-grammar pushdown-automaton regular-language

5
推荐指数
1
解决办法
1100
查看次数

为什么带有反向引用的正则表达式不是正则表达式?

这篇文章说:

像 \1 或 \2 这样的反向引用匹配由前面带括号的表达式匹配的字符串,并且只有该字符串: (cat|dog)\1 匹配 catcat 和 dogdog 但不匹配 catdog 或 dogcat。就理论术语而言,具有反向引用的正则表达式不是正则表达式。

为什么?出于什么原因\1成为“正则表达式”不再是“正则表达式”?

regex backreference regular-language

5
推荐指数
0
解决办法
209
查看次数

非正规语言与正规语言的串联总是不正规吗?

我想知道两种语言(一种是常规语言,另一种不是)之间的连接是否总是不规则的,或者输出是否可能是一种常规语言。谢谢。

computer-science context-free-grammar regular-language chomsky-normal-form

5
推荐指数
1
解决办法
5803
查看次数

JavaScript正则表达式没有\ p {L}吗?在JS正则表达式中使用Unicode

我需要增加a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒx时间,但是我觉得这很丑。所以我尝试了,\p{L}但是在JavaScript中不起作用。

任何的想法 ?

我的实际正则表达式: [a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ][a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ' ,"-]*[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ'",]+

我想要一个类似的东西:([\p{L}][\p{L}' ,"-]*[\p{L}'",]+或小于实际表达式)

javascript regex regular-language

5
推荐指数
1
解决办法
1870
查看次数

正则表达式可以用来识别任何上下文无关语言吗?

我知道正则表达式包可以识别比正则语言更广泛的语言,但是在Python 正则表达式中使用递归正则表达式来查找文本字符串中的算术表达式让我想知道是否可以使用正则表达式识别任何上下文无关语言,并且如果没有,有人可以提供一个反例吗?

regex regular-language context-free-language

5
推荐指数
1
解决办法
1243
查看次数