相关疑难解决方法(0)

python,正则表达式,命名组和"逻辑或"运算符

在python正则表达式中,命名和未命名组都使用'('和')'定义.这导致了一种奇怪的行为.正则表达式

"(?P<a>1)=(?P<b>2)"
Run Code Online (Sandbox Code Playgroud)

与文本"1 = 2"一起使用时,将找到值为"1"的命名组"a",并将值"2"命名为组"b".但是,如果我想使用"逻辑或"运算符并连接多个规则,请使用以下正则表达式:

"((?P<a>1)=(?P<b>2))|(?P<c>3)"
Run Code Online (Sandbox Code Playgroud)

使用相同文本"1 = 2"将找到一个值为"1 = 2" 的未命名组.我知道regexp引擎会将"("和")"视为一个未命名的组,并将"a"和"b"组合在一起,并报告它已找到.但我不希望报告一个未命名的组,我只想使用"|" 为了将多个正则表达式"粘合"在一起.没有创建任何寄生的未命名组.这是在python中这样做的方法吗?

python regex

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

问号像什么?:和?!在 Javascript regexp 中是什么意思?

喜欢这个正则表达式吗?它匹配什么?

document.getElementById("MyElement").className = 
   document.getElementById("MyElement").className.replace
  ( /(?:^|\s)MyClass(?!\S)/ , '' )
Run Code Online (Sandbox Code Playgroud)

javascript regex

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

任何人都能解释一下吗?:正则表达式

TCL:任何人都能解释一下吗?:正则表达式

我之间感到困惑?和?:.

?表示前面的字符可能存在,也可能不存在.

然后我不明白是什么(?:)表示.

任何人都可以请解释一下.

([0-9]+(?:\.[0-9]*)?)
Run Code Online (Sandbox Code Playgroud)

regex tcl

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

正则表达式组恰好匹配n次

我必须验证下一个字符串格式:

text-text-id-text
Run Code Online (Sandbox Code Playgroud)

分隔符是字符' - '.第三列必须始终为id.我写了下一个regex(在python中)验证字符串:

import re

s = 'col1-col2-col3-id' # any additional text at the end
                        # is allowed e.g. -col4-col5
print re.match('^(.*-){3}id(-.*)?$', s) # ok 
print re.match('^(.*-){1}id(-.*)?$', s) # still ok, is should not be
Run Code Online (Sandbox Code Playgroud)

我尝试添加非贪婪模式,但结果仍然相同:

^(.*?-){1}id(-.*)?$
Run Code Online (Sandbox Code Playgroud)

我的正则表达式中缺少什么?我可以像这样验证字符串:

>>> import re
>>> print re.split('-', 'col1-col2-col3-id')
['col1', 'col2', 'col3', 'id']
Run Code Online (Sandbox Code Playgroud)

然后检查第三个元素是否与id匹配,但我感兴趣的是为什么第一个正则表达式如上所述.

python regex string

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

Perl正则表达式匹配子字符串

我有几个要从中提取子字符串的字符串。这是一个例子:

/skukke/integration/build/IO/something
Run Code Online (Sandbox Code Playgroud)

我想提取第三个/字符之后的所有内容。在这种情况下,输出应为

/build/IO/something
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情

/\/\s*([^\\]*)\s*$/
Run Code Online (Sandbox Code Playgroud)

比赛的结果是

something
Run Code Online (Sandbox Code Playgroud)

这不是我想要的。有人可以帮忙吗?

regex perl

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

从一组字符中精确匹配其中一个

我试图匹配一组特定的字符,但每个只有1个.

例如,如果该集合是[abcd],我想以任何顺序匹配包含这些确切字符的字符串.

abcd  - true
bcad  - true
abc   - false (need all characters)
abbd  - false
abcdd - false
Run Code Online (Sandbox Code Playgroud)

据我所知,目前还没有简单的方法可以通过RegEx实现这一目标,但没有答案足够确凿.

regex

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

为什么python的re.search方法挂起?

我正在使用python regex库解析一些字符串,目前我发现我的regex太复杂或正在搜索的字符串太长。

这是挂断的示例:

>>> import re
>>> reg = "(\w+'?\s*)+[-|~]\s*((\d+\.?\d+\$?)|(\$?\d+\.?\d+))"
>>> re.search(reg, "**LOOKING FOR PAYPAL OFFERS ON THESE PAINTED UNCOMMONS**") #Hangs here...
Run Code Online (Sandbox Code Playgroud)

我不确定发生了什么。任何帮助表示赞赏!

编辑:这是与我要匹配的示例的链接:Regxr

python regex

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

正则表达式允许用户输入时间 - C#

许多其他问题为正则表达式提供了答案,这些表达式只允许完全完成的时间,如下所示:^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$

但是这在Textbox.TextChanged事件中没用,因为键入15:45文本框时将包含15:与上面的表达式不匹配的文本框.

是否有一种简单的方法可以允许Regex表达式的部分匹配,以确保仍然会经过一半的时间,或者我是否必须将表达式分解为所有由ors 分隔的部分,如下所示

c# regex textbox

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

带有黄瓜的正则表达式与给出错误的字符串不匹配,但如果多次编写测试,则会匹配相同的字符串

我正在用java编写并使用带有eclipse的cucumber来搜索具有以下要求的类似IP的字符串

应该接受由句点分隔的四位数序列,其中数字序列定义如下:任何单个数字,任何两位数字字符(如果第一个字符是非零),一个一个后跟一个零,一个或两个后跟任何数字

通过在 Stepdefs.java 文件中编写适当的正则表达式,这就是我写的

@When("^test_ip_address ((?:(\\d)|(1[0-2]\\d)|([1-9]\\d))\\.){3}(?:(\\d)|([1-9]\\d)|(1[0-2]\\d))$")
public void test_ip_address(String arg1) throws Throwable {
    System.out.println("test_ip_address true for: " + arg1);
}
Run Code Online (Sandbox Code Playgroud)

现在,当我在 Test.feature 文件中为此方法编写测试(用 Gherkin 语言)时,第一个测试总是失败,测试(应该全部通过)

When test_ip_address 1.2.3.4
When test_ip_address 123.34.76.109
When test_ip_address 123.34.76.109
When test_ip_address 105.22.33.44
Run Code Online (Sandbox Code Playgroud)

这不是价值问题,就像当我重新排序这些测试时,它总是第一个失败,即使我在另一个测试中使用了完全相同的值,它通过了!这是我得到的错误

cucumber.runtime.CucumberException: Arity mismatch: Step Definition 'skeleton.Stepdefs.test_ip_address(String) in file:(file path..)' with pattern [^test_ip_address ((?:(\d)|(1[0-2]\d)|([1-9]\d))\.){3}(?:(\d)|([1-9]\d)|(1[0-2]\d))$] is declared with 1 parameters. However, the gherkin step has 7 arguments [3., 3, null, null, 4, null, null]
Run Code Online (Sandbox Code Playgroud)

我搜索了错误,当测试中的参数数量与方法中的参数数量不同时,即使我使用 (?:) 将字符串作为一个参数传递,我也不知道在哪里这7个论点来自!也不是错误的原因

java regex cucumber-junit cucumber-java

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

使用Ruby扫描方法捕获组不能按预期工作

我需要从多行字符串中获取一组浮点数(正数和负数).例如:-45.124, 1124.325等等

这是我做的:

text.scan(/(\+|\-)?\d+(\.\d+)?/)
Run Code Online (Sandbox Code Playgroud)

虽然它在regex101上工作正常(捕获组0匹配我需要的所有东西),但它在Ruby代码中不起作用.

任何想法为什么会发生以及如何改进?

ruby regex

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

标签 统计

regex ×10

python ×3

c# ×1

cucumber-java ×1

cucumber-junit ×1

java ×1

javascript ×1

perl ×1

ruby ×1

string ×1

tcl ×1

textbox ×1