相关疑难解决方法(0)

生成一个与Python中的RegEx匹配的String

可能重复:
在python中反转正则表达式

我想我遇到的问题听起来比它更容易......我不太确定.我想定义一个正则表达式,我想构建一些匹配它的字符串.

我可以导入任何具有此功能的模块吗?优选地,不是使用re.search或的蛮力方法re.match.必须有一种更优雅的方式来做到这一点.

python regex stringbuilder

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

随机生成与给定正则表达式不匹配的字符串

对于我正在研究的项目的测试目的,如果给出正则表达式,我需要随机生成一个将由FAIL匹配的字符串.例如,如果我给这个正则表达式:

^[abcd]d+
Run Code Online (Sandbox Code Playgroud)

然后我应该能够生成如下字符串:

hnbbad
uduebbaef
9f8;djfew
skjcc98332f
Run Code Online (Sandbox Code Playgroud)

...每个都与正则表达式不匹配,但不生成:

addr32
bdfd09usdj
cdddddd-9fdssee
Run Code Online (Sandbox Code Playgroud)

......每一个DO.换句话说,我想要像反Xeger这样的东西.

这样的库是否存在,最好是用Python(如果我能理解这个理论,我很可能在需要的时候把它转换成Python)?我考虑过如何写这个,但考虑到正则表达式的范围,似乎可能比Xeger可以解决的问题困难得多.我也四处寻找一个预制的库来做这件事,但要么我没有使用正确的关键字进行搜索,要么之前没有人遇到过这个问题.

python regex

7
推荐指数
1
解决办法
930
查看次数

从正则表达式中提取静态字符串

我正在尝试有效地提取静态字符串(必须匹配给定正则表达式匹配的字符串).我已经能够在最简单的情况下完成它,但我正在尝试发现一个更强大的解决方案.


鉴于如下所示的正则表达式

"fox jump(ed|ing|s)"
Run Code Online (Sandbox Code Playgroud)

会给我们的

"fox,jumped,jumping,jumps"
Run Code Online (Sandbox Code Playgroud)

另一个例子是

"fox jump(ed|ing|s)?"
Run Code Online (Sandbox Code Playgroud)

哪会给我们

"fox,jump"
Run Code Online (Sandbox Code Playgroud)

因为可选的运算符


我现在的算法过于简单了.它将从正则表达式的末尾开始并删除组或单个字符,然后是这些运算符"*?" 以及"爆炸"分组OR运算符"(|)".这种方法效果很好,但没有考虑正则表达式的完整语法.您可以将其视为正则表达式的最小集生成过程(正则表达式可以"生成/必须匹配"的最小字符串集).

为什么? 我试图将一堆文本与大量正则表达式进行匹配.如果我可以获得"必需"这些正则表达式的"关键字"列表,我可以对该关键字进行快速文本搜索,以过滤我关心的正则表达式(忽略我保证不匹配的正则表达式,甚至跳过该文本完全有效地没有在文本上运行任何正则表达式,因为我们保证在我们的正则表达集中没有匹配).我可以在一个有效的数据结构(Binary Search/Trie/Aho-Corasick)中组织这组关键字,以便在我尝试通过有限自动机运行文本之前过滤一组正则表达式.在尝试运行正则表达式之前,我可以将极快的字符串匹配算法作为过滤阶段运行.在这个简单的过程中,我已经能够提高吞吐量.

regex

7
推荐指数
1
解决办法
644
查看次数

Python正则表达式字符串扩展

假设我有以下字符串:

trend  = '(A|B|C)_STRING'
Run Code Online (Sandbox Code Playgroud)

我想将其扩展为:

A_STRING
B_STRING
C_STRING
Run Code Online (Sandbox Code Playgroud)

OR条件可以是字符串中的任何位置.即STRING_(A|B)_STRING_(C|D)

会扩大到

STRING_A_STRING_C
STRING_B_STRING C
STRING_A_STRING_D
STRING_B_STRING_D
Run Code Online (Sandbox Code Playgroud)

我还想介绍一个空条件的情况:

(|A_)STRING 会扩大到:

A_STRING
STRING
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

def expandOr(trend):
    parenBegin = trend.index('(') + 1
    parenEnd = trend.index(')')
    orExpression = trend[parenBegin:parenEnd]
    originalTrend = trend[0:parenBegin - 1]
    expandedOrList = []

    for oe in orExpression.split("|"):
        expandedOrList.append(originalTrend + oe)
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用.

使用正则表达式有没有简单的方法呢?

python regex string

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

在 python 中匹配正则表达式的随机数据生成器

在 python 中,我正在寻找 python 代码,我可以使用它来创建与任何正则表达式匹配的随机数据。例如,如果正则表达式是

\d{1,100}
Run Code Online (Sandbox Code Playgroud)

我想要一个随机数列表,随机长度在 1 到 100 之间(均匀分布)

有一些可用的“正则表达式反相器”(请参阅​​此处)可以计算所有可能的匹配,这不是我想要的,而且非常不切实际。例如,上面的示例有超过 10^100 个可能的匹配项,这些匹配项永远无法存储在列表中。我只需要一个函数来随机返回匹配项。

也许已经有一个可用的软件包可以用来完成此任务?我需要一个函数来为任何正则表达式创建匹配字符串,而不仅仅是给定的一个或其他正则表达式,但可能是 100 个不同的正则表达式。我只是无法自己对它们进行编码,我希望函数提取模式以返回一个匹配的字符串。

python regex random

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

正则表达式python3

我尝试学习python3,我与正则表达式堆叠一点.我为此研究了HOWTO,但我不太了解.这页

    1\d2\D2
    ^a\w+z$
Run Code Online (Sandbox Code Playgroud)

python regex

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

标签 统计

regex ×6

python ×5

random ×1

string ×1

stringbuilder ×1