首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >句法分析来自:X;而不是lfrom:x;

句法分析来自:X;而不是lfrom:x;
EN

Stack Overflow用户
提问于 2012-11-06 18:48:07
回答 4查看 34关注 0票数 0

我试图用如下所示的方法解析字符串:

代码语言:javascript
复制
preg_match( "|from:(.*?);|", $string, $match);

但是,我发现字符串也可以包含lfrom:_from:

下面是字符串的几个示例:

var1:34234;from:website1.com;lfrom:website2.com;var2:343423;lfrom:website1.com;var1:4234234;from:website2.com from:website1.com;_from:website2.com;lfrom:website2.com;var1:43523;

如何仅解析from:(.*?);而不解析lfrom_from等。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-06 19:00:17

我本来想给你解决办法的,但我最好解释一下后面的修饰符。

例如,在regex中,每次“匹配”h时,h都会将1添加到正则表达式所在位置的指针中,因此您不希望“添加”任何东西到指针中。您只想查看from前面是否有一个;\s\b或字符串的开头。你不想与虚空相匹配,因为到处都是空隙!!

所以,举一个例子:(?<a)b,它将匹配一个在它前面有一个ab。所以它只做了下一个:当一个b找到它之前,如果有一个a,它就匹配正则表达式。

所以..。(?<=[;\s\b]|^)from:(\w+\.\w+)将在拥有[;\s\b] OR ^ (The string start)之前匹配一个[;\s\b] OR ^ (The string start)

演示

很容易,哈!?

票数 1
EN

Stack Overflow用户

发布于 2012-11-06 18:51:51

您可以使用断言:

代码语言:javascript
复制
|(?<!l)from:(.*?);|

或查找前面的;或行开始:

代码语言:javascript
复制
|(;|^)from:(.*?);|m

将一般的.*?匹配替换为[^;]*也可能是个好主意。

票数 1
EN

Stack Overflow用户

发布于 2012-11-06 18:51:19

假设前面的from是空格或;

代码语言:javascript
复制
/[\s\b;]from:([^;]+);/

这将只匹配由空格、word边界或;预先插入的;。我也倾向于缩小捕获范围,即[^;]+[.*?];。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13257367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档