假设我有两个正则表达式,
/eat (apple|pear)/
/I like/
Run Code Online (Sandbox Code Playgroud)
和文字
"I like to eat apples on a rainy day, but on sunny days, I like to eat pears."
Run Code Online (Sandbox Code Playgroud)
我想要的是使用preg_match获取以下索引:
match: 0,5 (I like)
match: 10,19 (eat apples)
match: 57,62 (I like)
match: 67,75 (eat pears)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用preg_match_all获取这些索引,而不是每次循环文本?
编辑:解决方案 PREG_OFFSET_CAPTURE!
给定以下字符串,如何在每个字符串中找到第一个alpha的位置?
1) - Alpha
2) beta
3) . Gamma
4) 'delta'
最终我在子串之后,从第一个alpha字符开始.所以我想要将我的子串偏移得到Alpha.
我正在寻找的补偿(来自上面的例子)是:
1)2
2)0
3)2
4)1
我不关心任何特殊人物.只是第一个alpha,不区分大小写(A-Za-z).
这是前一个问题的后续跟进.
正则表达式工作得很好但是我需要能够找出模式出现的确切位置.例如,如果我的正则表达式是从以下字符串中提取子字符串'bob'的实例:
This is abobsled
Run Code Online (Sandbox Code Playgroud)
我想知道字符串中第一次出现模式的确切字符位置,即在这种情况下,它在第10个字符位置 - 这可能吗?我在这里使用php.
==========================
谢谢,我想我再次陷入困境 - 但目前这是我想要做的.让我们说我有这种性质的模板:
Hello <=name=>
Take Care
From <=sender=>
Run Code Online (Sandbox Code Playgroud)
现在这很简单,因为所有细节都是一个单词,但是如果要替换标签的数据扩展到多行,我想设置它,所以它保持一些格式化,就像我使用的正则表达式一样,如果我用它来代替一个用多线的东西标记我得到以下内容:
Numbers: <=numbers=>
Run Code Online (Sandbox Code Playgroud)
变
Numbers: number1
number2
Run Code Online (Sandbox Code Playgroud)
当我想要的东西:
Numbers: Number1
Number2
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点 :(