php - 正则表达式获取某个字符串后的第一个数字,后跟任何数据直到数字

标签 php regex

我有一段数据,从数据库中检索并包含我需要的信息。文本以自由形式输入,因此可以用多种不同的方式编写。我唯一确定的是,我正在寻找给定字符串之后的第一个数字,但在该特定字符串之后(在数字之前)也可以是任何文本。

我试过了(其中 mytoken 是我确定它在那里的字符串)但这不起作用。

/(mytoken|MYTOKEN)(.*)\d{1}/
/(mytoken|MYTOKEN)[a-zA-Z]+\d{1}/
/(mytoken|MYTOKEN)(.*)[0-9]/
/(mytoken|MYTOKEN)[a-zA-Z]+[0-9]/

甚至 mytoken 也可以用大写、小写或大小写混合字符书写。表达式可以不区分大小写吗?

最佳答案

您不需要任何惰性匹配,因为您想要匹配任意数量的非数字符号,直到第一个数字。最好用 \D* 来完成:

/(mytoken)(\D*)(\d+)/i

参见 regex demo

图案细节:

  • (mytoken) - 第 1 组匹配 mytoken(不区分大小写,因为有一个 /i 修饰符)
  • (\D*) - 第 2 组匹配除数字以外的零个或多个字符
  • (\d+) - 第 3 组匹配 1 个或多个数字。

请注意 \D 也匹配换行符, 需要一个 DOTALL 修饰符来匹配换行符。

关于php - 正则表达式获取某个字符串后的第一个数字,后跟任何数据直到数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389926/

相关文章:

java - 正则表达式 - 否定特定的字符串/数字序列 [java]

r - `names_sep` 中的 `tidyr::pivot_longer` 参数在字符串拆分上是否灵活?

php - Laravel ErrorBag始终为空

PHP 递增字母循环

php - 当应用访问列表时,NGINX 会导致下载 index.php

php - 如何使用 PHP 从字符串中删除前 n 个数字字符?

regex - Golang 多行正则表达式不起作用

regex - PERL:如何在回车之外优雅地搜索/替换?

php - mysql搜索其中列与给定输入匹配或给定输入的价格在给定价格和价格之间

php - preg_match() 期望参数 2 是字符串,数组给定错误