Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在正则表达式中获得最接近的匹配_Php_Regex - Fatal编程技术网

Php 在正则表达式中获得最接近的匹配

Php 在正则表达式中获得最接近的匹配,php,regex,Php,Regex,我试图在正则表达式中找到两个单词之间最接近的匹配 下面是我正在尝试做的一个示例: 问题是“曲目编号”将找到第一个匹配项并继续查找“字幕” 我需要的只是grep Track number: 3 (track ID for mkvmerge & mkvextract: 2) | + Track UID: 1382186431 | + Track type: subtitles 所以基本上grep最接近“音轨号”的“字幕”单词 但我不知道该怎么办希望这能帮到你 解决方案1:< /强>

我试图在正则表达式中找到两个单词之间最接近的匹配

下面是我正在尝试做的一个示例:

问题是
“曲目编号”
将找到第一个匹配项并继续查找
“字幕”

我需要的只是grep

Track number: 3 (track ID for mkvmerge & mkvextract: 2)
|  + Track UID: 1382186431
|  + Track type: subtitles
所以基本上grep最接近
“音轨号”
“字幕”
单词


但我不知道该怎么办希望这能帮到你

<强>解决方案1:< /强> <代码>棘手的解决方案(为了测试目的,我在中间添加了一个示例字符串,以显示此解决方案工作正常)。< /代码> < /P>

$string='”
+EBML头
|+EBML版本:1
|+EBML读取版本:1
|+EBML最大ID长度:4
|+EBML最大尺寸长度:8
|+文件类型:matroska
|+单据类型版本:2
|+文件类型读取版本:2
+分段,尺寸627752082
|+搜索头(将跳过子项)
|+EbmlVoid(尺寸:4044)
|+段信息
|+时码刻度:1000000
|+Muxing应用程序:libebml v1.0.0+libmatroska v1.0.0
|+编写应用程序:mkvmerge v4.1.1(\'Bouncin\'Back\')构建于2010年7月3日22:54:08
|+持续时间:7279.440秒(02:01:19.440)
|+日期:星期六2010年9月18日15:52:16 UTC
|+段UID:0x83 0x63 0x0c 0xd7 0x2c 0xb9 0x73 0xb5 0xab 0x7f 0xd0 0xa4 0x3d 0x1c 0xf9 0xf6
|+分段轨道
|+轨道
|+轨道编号:1(mkvmerge和mkvextract的轨道ID:0)
|+轨道UID:1383154402
|+曲目类型:视频
|+系带标志:0
|+MinCache:1
|+编解码器ID:V_MPEG4/ISO/AVC
|+CodecPrivate,长度45(h.264配置文件:Main@L3.1)
|+默认持续时间:40.000ms(视频曲目每秒25.000帧/场)
|+视频曲目
|+像素宽度:1280
|+像素高度:696
|+显示宽度:1280
|+显示高度:696
|+轨道
|+轨道编号:2(mkvmerge和mkvextract的轨道ID:1)
|+轨道UID:3159569538
|+曲目类型:音频
|+编解码器ID:A_AAC
|+编解码器专用,长度2
|+默认持续时间:21.333ms(视频曲目每秒46.875帧/场)
|+音轨
|+采样频率:48000
|+频道:2
|+轨道
|+轨道编号:3(mkvmerge和mkvextract的轨道ID:2)
|+轨道UID:3633586111
|+曲目类型:字幕
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+轨道
|+轨道编号:4(mkvmerge和mkvextract的轨道ID:3)
|+轨道UID:1098098602
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:dut
|+轨道
|+轨道编号:5(mkvmerge和mkvextract的轨道ID:4)
|+轨道UID:2228128442
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:fre
|+轨道
|+轨道编号:6(mkvmerge和mkvextract的轨道ID:5)
|+轨道UID:1507679374
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:ita
|+轨道
|+轨道编号:7(mkvmerge和mkvextract的轨道ID:6)
|+轨道UID:3667538853
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:swe
|+EbmlVoid(尺寸:1239)
|+簇
';
$result=null;
$matched=false;

对于($x=0;$x希望这能帮到你

<强>解决方案1:< /强> <代码>棘手的解决方案(为了测试目的,我在中间添加了一个示例字符串,以显示此解决方案工作正常)。< /代码> < /P>

$string='”
+EBML头
|+EBML版本:1
|+EBML读取版本:1
|+EBML最大ID长度:4
|+EBML最大尺寸长度:8
|+文件类型:matroska
|+单据类型版本:2
|+文件类型读取版本:2
+分段,尺寸627752082
|+搜索头(将跳过子项)
|+EbmlVoid(尺寸:4044)
|+段信息
|+时码刻度:1000000
|+Muxing应用程序:libebml v1.0.0+libmatroska v1.0.0
|+编写应用程序:mkvmerge v4.1.1(\'Bouncin\'Back\')构建于2010年7月3日22:54:08
|+持续时间:7279.440秒(02:01:19.440)
|+日期:星期六2010年9月18日15:52:16 UTC
|+段UID:0x83 0x63 0x0c 0xd7 0x2c 0xb9 0x73 0xb5 0xab 0x7f 0xd0 0xa4 0x3d 0x1c 0xf9 0xf6
|+分段轨道
|+轨道
|+轨道编号:1(mkvmerge和mkvextract的轨道ID:0)
|+轨道UID:1383154402
|+曲目类型:视频
|+系带标志:0
|+MinCache:1
|+编解码器ID:V_MPEG4/ISO/AVC
|+CodecPrivate,长度45(h.264配置文件:Main@L3.1)
|+默认持续时间:40.000ms(视频曲目每秒25.000帧/场)
|+视频曲目
|+像素宽度:1280
|+像素高度:696
|+显示宽度:1280
|+显示高度:696
|+轨道
|+轨道编号:2(mkvmerge和mkvextract的轨道ID:1)
|+轨道UID:3159569538
|+曲目类型:音频
|+编解码器ID:A_AAC
|+编解码器专用,长度2
|+默认持续时间:21.333ms(视频曲目每秒46.875帧/场)
|+音轨
|+采样频率:48000
|+频道:2
|+轨道
|+轨道编号:3(mkvmerge和mkvextract的轨道ID:2)
|+轨道UID:3633586111
|+曲目类型:字幕
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+轨道
|+轨道编号:4(mkvmerge和mkvextract的轨道ID:3)
|+轨道UID:1098098602
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:dut
|+轨道
|+轨道编号:5(mkvmerge和mkvextract的轨道ID:4)
|+轨道UID:2228128442
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:fre
|+轨道
|+轨道编号:6(mkvmerge和mkvextract的轨道ID:5)
|+轨道UID:1507679374
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:ita
|+轨道
|+轨道编号:7(mkvmerge和mkvextract的轨道ID:6)
|+轨道UID:3667538853
|+曲目类型:字幕
|+默认标志:0
|+系带标志:0
|+编解码器ID:S_TEXT/UTF8
|+语言:swe
|+EbmlVoid(尺寸:1239)
|+簇
';
$result=null
$string='"
+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ EBML maximum ID length: 4
|+ EBML maximum size length: 8
|+ Doc type: matroska
|+ Doc type version: 2
|+ Doc type read version: 2
+ Segment, size 627752082
|+ Seek head (subentries will be skipped)
|+ EbmlVoid (size: 4044)
|+ Segment information
| + Timecode scale: 1000000
| + Muxing application: libebml v1.0.0 + libmatroska v1.0.0
| + Writing application: mkvmerge v4.1.1 (\'Bouncin\' Back\') built on Jul  3 2010 22:54:08
| + Duration: 7279.440s (02:01:19.440)
| + Date: Sat Sep 18 15:52:16 2010 UTC
| + Segment UID: 0x83 0x63 0x0c 0xd7 0x2c 0xb9 0x73 0xb5 0xab 0x7f 0xd0 0xa4 0x3d 0x1c 0xf9 0xf6
|+ Segment tracks
| + A track
|  + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
|  + Track UID: 1383154402
|  + Track type: video
|  + Lacing flag: 0
|  + MinCache: 1
|  + Codec ID: V_MPEG4/ISO/AVC
|  + CodecPrivate, length 45 (h.264 profile: Main @L3.1)
|  + Default duration: 40.000ms (25.000 frames/fields per second for a video track)
|  + Video track
|   + Pixel width: 1280
|   + Pixel height: 696
|   + Display width: 1280
|   + Display height: 696
| + A track
|  + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
|  + Track UID: 3159569538
|  + Track type: audio
|  + Codec ID: A_AAC
|  + CodecPrivate, length 2
|  + Default duration: 21.333ms (46.875 frames/fields per second for a video track)
|  + Audio track
|   + Sampling frequency: 48000
|   + Channels: 2
| + A track
|  + Track number: 3 (track ID for mkvmerge & mkvextract: 2)
|  + Track UID: 3633586111
|  + Track type: subtitles
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 1098098602
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: dut
| + A track
|  + Track number: 5 (track ID for mkvmerge & mkvextract: 4)
|  + Track UID: 2228128442
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: fre
| + A track
|  + Track number: 6 (track ID for mkvmerge & mkvextract: 5)
|  + Track UID: 1507679374
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: ita
| + A track
|  + Track number: 7 (track ID for mkvmerge & mkvextract: 6)
|  + Track UID: 3667538853
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Language: swe
|+ EbmlVoid (size: 1239)
|+ Cluster
';
$result=null;
$matched=false;
for($x=0;$x<substr_count($string, "|");$x++)
{
    preg_match_all("/Track number(?:.*?[\|]){".$x."}/s", $string,$matches);
    foreach($matches[0] as $match)
    {
        if(preg_match_all("/Track number.*?subtitles/s", $match,$matches))
        {
            $result[]=$matches[0];
            $matched=true;
        }
    }
    if($matched==true)
    {
        break;
    }
}
print_r($result);
Track number: 3 (track ID for mkvmerge & mkvextract: 2) | + Track UID: 1382186431 | + Track type: subtitles ---- Other tracks in between ---- Track number: 3 (track ID for mkvmerge & mkvextract: 7) | + Track UID: 1887396985 | + Track type: subtitles