假设我有两个正则表达式,
/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!
我的目标是通过Microsoft Word文档(.docx)过滤所有日语汉字和假名.我正在使用的当前代码如下:
preg_match_all('~[\x{4e00}-\x{9faf}]([\x{3040}-\x{309f}]) \= ([a-z]) \=+~u', $data, $matches);
Run Code Online (Sandbox Code Playgroud)
根据一些研究,我发现日文文本的unicode值如下:http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml
我正在使用的数据示例如下所示:
时(とき)= toki =时间; 小时; 场合; 时刻を= wo =粒子标记句子的直接对象(时=时间)超えて(こえて)= koete = cross
我的最终目标是能够以类似的模式运行preg_match_all获取数据,看起来像"超えて(こえて)= koete"之前的信息(以及里面的信息()和之后的罗马化= =
我正在寻找的结果将是一个返回的数组,看起来像:
array(
0 => array('?', '??', 'toki'),
1 => array('???', '???', 'koete')
);
Run Code Online (Sandbox Code Playgroud)
每个数组的第一个结果包括"汉字,平假名,可能还有片假名",而第二个结果只有平假名,第三个结果只是普通的字母字符.我对正则表达式并不是很好,并添加了Japaense unicode,我很无能为力,任何帮助都会非常感激!谢谢!
我有以下我成功使用的正则表达式:
preg_match_all('/(\d+)\n(\w.*)\n(\d{3}\.\d{3}\.\d{2})\n(\d.*)\n(\d.*)/', $text, $matches)
Run Code Online (Sandbox Code Playgroud)
但是我刚刚发现,如果(\w.*)部件匹配的文本以外来字符开头Ä,那么它与任何东西都不匹配.
任何人都可以帮助我正确的模式应该是什么,而不是(\w.*)匹配以任何字符开头的字符串?
非常感谢
我有兴趣实时替换数字匹配并将它们操作为十六进制.
我很想知道是否可以不使用foreach循环.
所以...
两者之间的一切 :
= {数值} ;
将被归为:
= {十六进制数值} ;
preg_match_all('/\=[0-9]\;/',$src,$matches);
Run Code Online (Sandbox Code Playgroud)
是否有任何回调preg_match_all所以不是预先形成一个循环,我可以在preg_match_all捕获每个匹配(实时)时立即操作它们.
这不是正确的语法,但你可以得到这个想法:
preg_match_all_callback('/\=[0-9]\;/',$src,$matches,{convertAll[0-9]ToHexadecimal});
Run Code Online (Sandbox Code Playgroud) 这是我的代码
<?php
/**
* @author Joomlacoders
* @copyright 2010
*/
$url="http://urlchecker.net/html/demo.html";
$innerHtml=file_get_contents($url);
//echo $innerHtml;
preg_match_all("{\<div id='news-id-.*d'\>(.*)\</div\>}",$innerHtml,$matches);
//<div id='news-id-160346'>
var_dump($matches);
?>
Run Code Online (Sandbox Code Playgroud)
我想找到div id ='news-id-160346'中的所有内容.请帮我
我试图从这个数组中获取信息,但由于某种原因,它将所有内容嵌入$matches[0].
<?
$file = shell_exec('pdf2txt.py docs/April.pdf');
preg_match_all('/.../',$file,&$matches);
print_r($matches)
?>
Run Code Online (Sandbox Code Playgroud)
这是否按预期工作?有没有办法把它放在深度为1的数组中?
这是RegEx:
([A-Z][a-z]+\s){1,5}\s?[^a-zA-Z\d\s:,.\'\"]\s?[A-Za-z+\W]+\s[\d]{1,2}\s[A-Z][a-z]+\s[\d]{4}
Run Code Online (Sandbox Code Playgroud) 我花了 4 个多小时试图找到我的 php 代码的正则表达式模式,但没有运气。
我有一个带有 html 代码的字符串。它有很多网址格式,例如:
example.com
http://example.com
http://www.example.com
http://example.com/some.php
http://example.com/some.php?var1=1
http://example.com/some.php?var1=1&var2=2
etc.
Run Code Online (Sandbox Code Playgroud)
我有以下 php 代码部分工作:
preg_match_all('/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $content, $result, PREG_PATTERN_ORDER);
Run Code Online (Sandbox Code Playgroud)
我唯一需要的是还使用“&”捕获具有多个查询字符串的 url 我得到它们,但不是完整的,我只收到如下内容:
http://example.com/asdad.php?var1=1&
Run Code Online (Sandbox Code Playgroud)
左边丢失了。
有人可以帮我将丢失的部分添加到模式中吗?
非常感谢。
我试图确定一个字符串是否在双引号之间有任何单词preg_match_all,但它是重复结果,第一个结果有两组双引号,其中被搜索的字符串只有一组.
这是我的代码:
$str = 'Test start. "Test match this". Test end.';
$groups = array();
preg_match_all('/"([^"]+)"/', $str, $groups);
var_dump($groups);
Run Code Online (Sandbox Code Playgroud)
var转储产生:
array(2) {
[0]=>
array(1) {
[0]=>
string(17) ""Test match this""
}
[1]=>
array(1) {
[0]=>
string(15) "Test match this"
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,第一个数组是错的,为什么要preg_match_all返回呢?
我有一个包含文本、数字和符号的字符串。我试图从字符串中提取数字和符号,但成功有限。我没有得到整个数字和符号,而是只得到其中的一部分。我将在下面解释我的正则表达式,使其更清晰,更容易理解。
\d : any number
[+,-,*,/,0-9]+ : 1 or more of any +,-,*,/, or number
\d : any number
Run Code Online (Sandbox Code Playgroud)
代码:
$string = "text 1+1-1*1/1= text";
$regex = "~\d[+,-,*,/,0-9]+\d~siU";
preg_match_all($regex, $string, $matches);
echo $matches[0][0];
Run Code Online (Sandbox Code Playgroud)
预期成绩
1+1-1*1/1
Run Code Online (Sandbox Code Playgroud)
实际结果
1+1
Run Code Online (Sandbox Code Playgroud) 我有一个文本,并尝试添加链接到其中的每个数字3.
我使用带有模式的preg_match_all:(^|[^\d])(\d{3})($|[^\d])
此处使用分组仅将链接添加到数字,而不是添加到其邻居.测试用例包括:
a 123 234 b - 必须匹配123和234a 123_234 b - 必须匹配123和234aa123 234 b - 必须匹配123和234a0123 234 b- 必须只匹配234123a234 b - 必须匹配123和234a 123 234 - 必须匹配123和234测试2和3工作正常,其他测试因2个数字之间的空间而失败.
如何将两个数字匹配,它们之间只有1个空格?