相关疑难解决方法(0)

"无匹配"的正则表达式语法?

我有一个大量使用regexp的python模板引擎.它使用如下的连接:

re.compile( regexp1 + "|" + regexp2 + "*|" + regexp3 + "+" )
Run Code Online (Sandbox Code Playgroud)

我可以修改单个子串(regexp1,regexp2等).

是否有任何小而轻的表达式,什么都不匹配,我可以在模板中使用,我不想要任何匹配?不幸的是,有时'+'或'*'被附加到正则表达式原子,因此我不能使用空字符串 - 这将引发"无需重复"错误.

python regex

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

参考 - 这个正则表达式意味着什么?

这是什么?

这是常见问答的集合.这也是社区Wiki,因此每个人都被邀请参与维护.

为什么是这样?

患的是给我泽码型的问题和答案不佳,没有解释.此参考旨在提供质量问答的链接.

范围是什么?

此引用适用于以下语言:,,,,,,.

这可能过于宽泛,但这些语言共享相同的语法.对于特定功能,它背后的语言标签,例如:

  • 什么是正则表达式平衡组?

regex

52
推荐指数
1
解决办法
11万
查看次数

正则表达式*不*匹配任何字符

我知道这是一个非常奇怪的目标但是对于我们的系统中的一个快速和脏的修复,我们确实需要不过滤任何输入并让腐败进入系统.

我现在的正则表达式是" \^.*"

问题在于它与计划中的字符不匹配...但是对于一个匹配它确实有效.使它不起作用的字符串是^ @jj(基本上任何有^ ...的东西).

现在不匹配任何角色的最佳方法是什么?我正在考虑删除\  但只是这样做会将"不"变成"开始"......

regex

37
推荐指数
4
解决办法
8万
查看次数

正则表达式末尾的花括号中用逗号分隔的数字是什么意思

我试图理解后面的正则表达式,我理解了初始部分但不能弄清楚{3,19}在这里做了什么

/[A-Z][A-Za-z0-9\s]{3,19}$/
Run Code Online (Sandbox Code Playgroud)

javascript regex

17
推荐指数
3
解决办法
8082
查看次数

正则表达式中^和\ A,$和\ Z有什么区别?

在正则表达式中:

  • ^和之间有什么区别\A
  • $和之间有什么区别\Z

regex

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

什么时候应该使用正则表达式回溯控件,如(*PRUNE)?

一些正则表达式引擎(当然,只是Perl作为现在,据我所知)支持回溯相关的动词:(*PRUNE),(*SKIP),(?{doSomeCode();})*等我已经知道这些动词做的,从这里.

我对Perl只有一个非常基本的理解(所以尽可能避免依赖复杂的Perl代码),但我知道它是开创新正则表达式功能的语言.

根据我的理解,Perl似乎与正则表达式相比,与其他语言相比更加集成.出于这个原因,它的命令式风格已经渗透到其正则表达式中可能是有道理的.在其他具有正则表达式的语言中,即使优先考虑贪婪评估,正则表达式的基础样式也是声明性的(类似于SQL).

我倾向于认为这些动词有些深奥,或者至少是更低级别编程类型的不必要步骤.而不是需要(*PRUNE),不是更好(降低正则表达式编写器/程序员和读者的复杂性)在幕后进行更多优化(比如在编译器或引擎中)?

那么,在实际中,在正则表达式中包含与回溯相关的动词在什么情况下是有用的?这样做会有好处吗?


* 虽然在技术上不是回溯控制动词,但许多在正则表达式中执行任意代码的示例都会以影响或受回溯影响的方式执行.


背景

根据Perl正则表达式教程,这些功能是实验性的(将来可能会被删除).难怪我无法在互联网上找到很多关于这些结构的内容(特别是当搜索被代码中包含skip或不prune在外的无关结果堵塞时).我敢打赌,在正则表达式中有很多人已经足够先进,使用这些动词根本就不知道它们.

因此,目前存在许多妨碍广泛使用的实际障碍:

  1. 功能是实验性的

  2. 功能晦涩难懂

  3. 功能先进

以上3点是显而易见的,所以我想给出更多答案it's never useful because: 1, 2, or 3.如果可能的话,尝试给出一些背景,说明作者对这些动词的意图,和/或证明它们确实会被废弃(或者计划为他们设计另一个未来).

我也知道存在一个封闭的(过于基于意见的)问题,但我认为这个问题不太基于意见.我相信其他问题是,根据意见,因为它问:"有 ",这意味着答案必须因人而异(我也许能写的答案,说:"人无我有没有"没有它自己的错误,但它也不会有帮助).我会说,对这个问题说"是"的唯一答案给出了两个链接,其中一个是深奥的用法(另外,我无法理解......).另一个,虽然它给出了何时使用的情况,(*FAIL)但没有解决我提到的任何其他结构,也没有(*FAIL)用作回溯机制.根据我的理解,(*FAIL)可以通过任何总是失败的正则表达式来模拟.

让我在答案中重新说明我要找的内容:

  • 特别关注回溯
  • 非密宗
  • 实际的
  • 不仅仅是一个用法的例子
  • 对给出的任何例子都有解释
  • 可能包含添加功能的原因背景
  • 可能包含与功能未来相关的更新(包括Perl或其他正则表达式)

regex perl

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

一个简单的Perl正则表达式保证永远不会匹配字符串?

可能重复:
永远不会被任何东西匹配的正则表达式

我有一个脚本,以正则表达式作为参数.默认情况下,我想将正则表达式设置为永远不会匹配任何字符串的东西,所以我可以简单地说

if ($str =~ $regex)
Run Code Online (Sandbox Code Playgroud)

没有例如必须首先检查已定义($ regex).

我想出来了

qr/[^\s\S]/
Run Code Online (Sandbox Code Playgroud)

但不知道这是否会匹配一些既不是空间也不是非空间的utf8字符.

regex perl

9
推荐指数
2
解决办法
1055
查看次数

如何设置不匹配的REGEX?

只是为了好奇.

是否可以创建一个与任何字符串都不匹配的正则表达式,包括空字符串?

regex regex-negation

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

正则表达式检查两个第一个单词是否相同

例如:

$s1 = "Test Test the rest of string"
$s2 = "Test the rest of string"
Run Code Online (Sandbox Code Playgroud)

我想积极匹配,$s1但不是$s2,因为第一个词$s1与第二个相同.Word 'Test'就是例子,正则表达式应该适用于任何单词.

php regex

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

正则表达式 - 仅匹配特定长度或更少的通配符

有没有办法让正则表达式语句搜索具有最大长度的通配符?例如:

somestuff.*morestuff
Run Code Online (Sandbox Code Playgroud)

如果我想要上面的匹配

somestuffblahmorestuff
Run Code Online (Sandbox Code Playgroud)

但不是

somestuffblahblahmorestuff
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c# regex wildcard maxlength

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

永远不匹配任何内容的正则表达式模式

我正在维护一些包含规则列表的 C# 软件,每个规则都有一个正则表达式模式作为其定义的一部分。正则表达式模式确定规则是否应应用于特定数据实例。

即给定一个特定的字符串,如果正则表达式模式与该字符串匹配,则应用该规则,但切勿对正则表达式模式不匹配的字符串应用该规则。

我想停用一些规则,以便它们永远不会应用于任何字符串。

所以我需要一个不匹配的正则表达式模式,无论传递给它的字符串值是什么。

有什么建议么?

c# regex string

-2
推荐指数
1
解决办法
493
查看次数

标签 统计

regex ×11

c# ×2

perl ×2

javascript ×1

maxlength ×1

php ×1

python ×1

regex-negation ×1

string ×1

wildcard ×1