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