我有如下所示的变量字符串:
The.Test.String.A01Y18.123h.WIB-DI.DO5.1.K.314-ECO
The.Regex.F05P78.123h.WIB-DI.DO5.1.K.314-EYT
Word.C05F78.342T.DSW-RF.EF5.2.F.342-DDF
我想动态地在PHP中提取这些字符串的这一部分而我正在考虑使用正则表达式但是还没有取得多大成功:
The.Test.String.A01Y18
The.Regex.F05P78
Word.C05F78
最终:
测试字符串A01Y18
正则表达式F05P78
Word C05F78
文本的第一部分长度可变,并将每个单词与句点分开。下一部分的长度始终与模式相同:
一个字母,2个数字,一个字母,2个数字模式(C05F78)
之后字符串中的任何内容都是我要删除的内容。
答案 0 :(得分:1)
它是
$x=array(
"The.Test.String.A01Y18.123h.WIB-DI.DO5.1.K.314-ECO",
"The.Regex.F05P78.123h.WIB-DI.DO5.1.K.314-EYT",
"Word.C05F78.342T.DSW-RF.EF5.2.F.342-DDF"
);
for ($i=0, $tmp_count=count($x); $i<$tmp_count; ++$i) {
echo str_replace(".", " ", preg_replace("/^(.+?)([a-z]{1}[0-9]{2}[a-z]{1}[0-9]{2})\..+$/i", "\\1\\2", $x[$i]))."<br />";
}
答案 1 :(得分:1)
答案 2 :(得分:1)
这也是有效的:
preg_match("\.*[\w\d]{6}", stringVariable)
。*对于所有数字至少我们发现了一个由6个字符组成的字母和单词([\ w \ d] {6})
结果:
Match 1: The.Test.Stsrisng.A01Y18
Match 2: The.Regex.F05P78
Match 3: Word.C05F78