相关疑难解决方法(0)

Python正则表达式找到所有重叠匹配?

我试图在Python 2.6中使用re在一系列更大的数字中找到每10个数字系列的数字.

我很容易就能抓住没有重叠的比赛,但我想要数字系列中的每场比赛.例如.

在"123456789123456789"

我应该得到以下列表:

[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
Run Code Online (Sandbox Code Playgroud)

我发现了对"前瞻"的引用,但我看过的例子只显示了数字对而不是更大的分组,我无法将它们转换为超出两位数.

python regex overlapping

77
推荐指数
4
解决办法
5万
查看次数

在Regex中重叠匹配

我似乎无法找到这个问题的答案,我想知道是否存在.简化示例:

考虑一个字符串"nnnn",其中我想找到"nn"的所有匹配 - 但也是那些彼此重叠的匹配.因此正则表达式将提供以下3个匹配:

  1. nn nn
  2. ñ NN ñ
  3. nn nn

我意识到这并不是正则表达式的意思,但是对字符串进行操作并手动解析它似乎是一个非常多的代码,考虑到实际上匹配必须使用模式而不是文字字符串来完成.

c# regex overlap

34
推荐指数
2
解决办法
9469
查看次数

如何在字符串中获得可能重叠的匹配

我正在寻找一种方法,无论是在Ruby还是Javascript中,它都会在字符串中为正则表达式提供所有匹配,可能重叠.


假设我有str = "abcadc",我希望找到a后跟任意数量字符的事件,然后是c.我正在寻找的结果是["abc", "adc", "abcadc"].有关如何实现这一目标的任何想法?

str.scan(/a.*c/)会给我的["abcadc"],str.scan(/(?=(a.*c))/).flatten会给我的["abcadc", "adc"].

javascript ruby regex

22
推荐指数
6
解决办法
1482
查看次数

如何在 Rust 中获取重叠的正则表达式捕获?

我正在尝试匹配特定字符后的两个字符。尾随值可能包含指定的字符,这是可以的,但我还需要捕获该指定的字符作为下一个捕获组的开头。

这段代码应该说明我的意思:

extern crate regex;
use regex::Regex;


pub fn main() {
    let re = Regex::new("(a..)").unwrap();
    let st = String::from("aba34jf baacdaab");
    println!("String to match: {}", st);

    for cap in re.captures_iter(&st) {
        println!("{}", cap[1].to_string());
        // Prints "aba" and "aac",
        // Should print "aba", "a34", "aac", "acd", "aab"
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在不使用环视的情况下获得重叠捕获(正则表达式板条箱在 Rust 中不支持)?有没有类似于 Python 中的东西(如这里提到的)但在 Rust 中?

编辑:

按照 BurntSushi5 的建议使用 onig,我们得到以下结果:

extern crate onig;
use onig::*;

pub fn main() {
    let re = Regex::new("(?=(a.{2}))").unwrap();
    let st = String::from("aba34jf baacdaab");
    println!("String …
Run Code Online (Sandbox Code Playgroud)

regex rust

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

查找字符串中的所有可能的子字符串.Python正则表达式

我想在字符串中找到所有可能的子字符串,其中包含以下要求:子字符串以N开头,下一个字母是除P以外的任何字母,下一个字母是S或T

有了测试字符串"NNSTL",我想得到结果"NNS" and "NST"

这可能与正则表达式?

python regex string

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

php regex在子字符串中查找子字符串

我还在玩一个带有匹配单词的项目.

假设我有一个给定的字符串,比如maxmuster.然后我想,以纪念这个我随机单词的一部分MAXS这是在maxmuster按正确的顺序,如字母.

我会举一些例子,然后我告诉我已经做了什么.让我们保持字符串maxmuster.粗体部分是正则表达式匹配的一个(最好是在PHP中,但可能是python,bash,javascript,...)

最大

我的maxmu

鼓起

当然,m,u,...也将匹配.我知道,我稍后会解决这个问题.但是,我的解决方案应该不会那么困难,所以我尝试将这个词分成这样的组:

/(maxmuster)?|(maxmuste)?|(maxmust)?|(maxmus)?|(maxmu)?|(maxm)?|(max)?|(ma)?|(m)?/gui
Run Code Online (Sandbox Code Playgroud)

但后来我忘了其他的组合,比如:

(axmuster)(xmus)等等.我是否真的必须这样做,或存在一个简单的正则表达技巧,来解决这个问题,就像我上面解释的那样?

非常感谢你

php regex

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

正则表达式包括具有相同开始的重叠匹配

我正在使用Python 3.6。

我的目标是匹配一个可能匹配多个字符串、重叠和/或从同一位置开始的正则表达式,例如:

re.findall('B.*A','BADACBA')
Run Code Online (Sandbox Code Playgroud)

这使:

['BADACBA']
Run Code Online (Sandbox Code Playgroud)

但我想要:

['BADACBA','BADA','BA','BA']
Run Code Online (Sandbox Code Playgroud)

(第二个是因为字符串中'BA'有两个实例)'BA'

根据如何使用正则表达式查找重叠匹配的建议?,我尝试将其包含在前瞻中:

re.findall('(?=(B.*A))','BADACBA')
Run Code Online (Sandbox Code Playgroud)

这使:

['BADACBA', 'BA']
Run Code Online (Sandbox Code Playgroud)

哪个更好,但仍然不是我想要的。

我也尝试过该regex模块:

regex.findall('B.*A','BADACBA',overlapped=True)
Run Code Online (Sandbox Code Playgroud)

但它仍然返回:

['BADACBA', 'BA']
Run Code Online (Sandbox Code Playgroud)

我还没能找到能找到所有匹配项的东西。由于我有很多这样的正则表达式,因此硬编码的解决方案没有多大帮助。有没有一个模块/函数可以做到这一点?

谢谢!

python regex python-3.x

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

正则表达式捕获重叠匹配

我正在寻找一个正则表达式选项或技巧,以在匹配可以重叠时捕获正则表达式中所有可能的字符串。

示例:/A.A/在字符串中"ABACADA"

它发现:ABA, ADA而不是ACA!!

我想 :ABA, ACA, ADA

我正在使用 PHP,但它可以应用于其他语言

preg_match_all('/A.A/',"ABACADA",$matches);
var_dump($matches[0]);
// output : array (size=2)
// 0 => string 'ABA' (length=3)
// 1 => string 'ADA' (length=3)
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?谢谢

regex

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

关于正则表达式

import re

line = 'Here is my probblem, brother!'

t = re.findall('..b', line)

print(t)
Run Code Online (Sandbox Code Playgroud)

这打印:

['rob', ', b']
Run Code Online (Sandbox Code Playgroud)

但它应该在'probblem'中找到'obb'.为什么?

python regex

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

C#Regex获取所有可能的匹配项

我想提取这个正则表达式的所有出现

\d{7,8}
Run Code Online (Sandbox Code Playgroud)

(每个长度为7或8的数字)

输入可能是这样的

asd123456789bbaasd

我想要的是一个数组:

["1234567", "12345678", "2345678", "23456789"]
Run Code Online (Sandbox Code Playgroud)

所有可能出现的数字,有7或8个长度.

Regex.Matches的工作方式不同,它会返回所有连续出现的匹配项.... ["12345678"]

任何的想法?

c# regex

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

如何以 n 个字符为一组而不是一次一个字符来迭代字符串?

认为 -

string = "abcdefgh"
Run Code Online (Sandbox Code Playgroud)

如果我做 -

for i in string:
    print (i)
Run Code Online (Sandbox Code Playgroud)

我得到-

a
b
c
d
e
f
g
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的 -

ab
bc
cd
de
ef
fg
Run Code Online (Sandbox Code Playgroud)

或者我们指定的任何其他分组。是否可以为此创建一个函数,同时牢记我们需要的分组?谢谢

python python-3.x

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

Python正则表达式:查找相邻字符

我需要得到一个包含字符串中每两个相邻的字符的列表hello,使得

['he', 'el', 'll', 'lo']
Run Code Online (Sandbox Code Playgroud)

我以为我可以这样做

>>>import re
>>>re.findall(r'..', 'hello')
['he', 'll']
Run Code Online (Sandbox Code Playgroud)

这不是我想要的.我需要使用正则表达式获取上面提到的列表

python regex

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

标签 统计

regex ×11

python ×6

c# ×2

python-3.x ×2

javascript ×1

overlap ×1

overlapping ×1

php ×1

ruby ×1

rust ×1

string ×1