正则表达式:匹配第一次出现的字符

 2024-01-30 05:01:10  阅读 0

我正在寻找一种匹配所有内容的模式,直到第一次出现特定字符为止,例如“;” -分号。

我这样写:

/^(.*);/

但它实际上匹配所有内容(包括分号),直到最后一次出现分号。

你需要

/[^;]*/

[^;] 是一个字符类,匹配除分号之外的所有字符。

引用联机帮助页:

您可以通过 [] 列表创建一个类,它将匹配列表中的任何一个。 如果“[”之后的第一个是“^”,则该类不在列表中。

这适用于大多数正则表达式

将要;

/^(.*?);/

工作?

? 是一个惰性运算符,因此正则表达式在匹配 ; 之前获得尽可能少的数据。

/^[^;]*/

[^;] 表示匹配除分号之外的任何内容。 方括号是集合匹配运算符,本质上它匹配该集合中的任何字符,开头的 ^ 使其成为反向匹配,因此匹配集合中不存在的任何字符。

尝试/[^;]*/

正则表达式了解详细信息。

尝试/[^;]*/

这是一个负面角色类别。

示例文本:

“这是一个测试;证明这个正则表达式;即下面的 g;”

例如,如果我们有上面的示例文本,正则表达式 /(.*?\;)/ 将为您提供所有内容,包括第一次出现分号 (;):“this is a test ;”

这不是正则表达式解决方案,但对于您的问题描述来说足够简单。 只需拆分字符串并获取数组中的第一项即可。

$str =“匹配直到第一个;等等;等等结束”;

$s = (";",$str,2);

打印 $s[0];

屈服

$ php 测试.php

匹配直到第一个

这对我非常有帮助,因为我正在尝试找出如何匹配 xml 标记(包括属性)中的所有字符。 我遇到了“一切都匹配到最后”的问题:

//

但这个问题可以通过以下方法解决:

/]*>/

看完这篇文章,谢谢大家

这只会匹配每个字符串中的第一次出现,后续匹配将被忽略。

/^([^;]*);*/

“/^([^\/]*)\/$/”为我工作,只从数组中获取顶部“文件夹”,如下所示:

一个/一个/b/

c/c/d/

/d/e/

F/

没有人能给你正确的答案,真是太遗憾了。

在正则表达式中,使其不贪婪。 默认情况下,正则表达式将尽可能匹配(贪婪)

就加一个吗? 它将是非贪婪的,并且匹配越少越好!

祝你好运,希望这能帮到你。

标签: 正则表达式

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码