捕获文本周围正则表达式匹配.NET

时间:2016-12-05 19:04:32

标签: c# .net regex

我正在构建一个应用程序,我需要在匹配之前和之后捕获字符。这似乎没问题,除非周围捕获中有多个匹配。

正则表达式:

.{0,10}(?=abc)

在找到字符串“abc”之前,最多可捕获10个字符。

如果前一个文本中的匹配重复出现,则会出现此问题:

"qqqqabcabcqqq"

根据上述文本,我希望有两个捕获:

qqqq (the 4 characters before the first abc occurrence)
qqqqabc (the 7 characters before the second abc occurrence)

我不是,但得到这些比赛。我得到的唯一一个匹配是:

qqqqabc

我确信我错过了什么,但我不确定是什么。我相信我的正则表达式在某种程度上太贪婪了,所以它忽略了第一场比赛,支持更大的第二场比赛。这就是我需要的:

我需要一个正则表达式:

1。适用于.NET

2. 在字符串S完全匹配之前,在字符串中查找X个字符。

3. 包括在S之前的X个字符中找到的S(呼叫S')上的任何辅助匹配

4。并不关心这些角色是什么。

我向你保证,我尝试寻找类似的答案,但我找不到任何直接回答这个问题的东西(这已经困扰了我两天。是的,我必须使用正则表达式)。至于Regex风味,我在.NET工作。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这是:

foods=document.getElementsByClass("food");
foods.forEach(function(food){
    collision(basket,food);
 });

我花了一些时间来记住.NET允许具有可变性的积极外观。

Regex test

Demo in C#

我改变了初始版本的工作方式。

希望它有所帮助!

PS:我已经命名了这个小组,但是如果你想要一个不那么混乱的正则表达式,你显然可以自由地保持它无名并与编号组合作:

(?<=(?<CharsBefore>.{0,10}))(?=abc)