从给定字符串中匹配三个部分的正则表达式

3

示例输入:

hjkhwe5boijdfg

我需要将其拆分为以下3个变量:
  1. hjkhwe5(任意长度,总是以某个数字结尾(可以是任何数字))
  2. b(总是一个字母,可以是任何字母)
  3. oijdfg(剩余的所有内容,数字或字母的任意组合)
我已经设置好了PHP的preg_match,但不知道如何使用这个复杂的正则表达式。有人能帮我吗?
2个回答

1

来试一下:

$str = 'hjkhwe5boijdfg';
preg_match("/^([a-z]+\d+)([a-z])(.*)$/", $str, $m);
print_r($m);

输出:

Array
(
    [0] => hjkhwe5boijdfg
    [1] => hjkhwe5
    [2] => b
    [3] => oijdfg
)

解释:

^           : begining of line
  (         : 1rst group
    [a-z]+  : 1 or more letters
    \d+     : followed by 1 or more digit
  )         : end of group 1
  (         : 2nd group
    [a-z]   : 1 letter
  )         : end group 2
  (         : 3rd group
    .*      : any number of any char
  )         : end group 3
$

Coda更快,但那个解释真是太好了。我现在明白正则表达式了!谢谢 :) - David19801

0

您可以使用 preg_match 如下:

$str = 'hjkhwe5boijdfg';
if(preg_match('/^(\D*\d+)(\w)(.*)$/',$str,$m)) {
        // $m[1] has part 1, $m[2] has part 2 and $m[3] has part 3.
}

查看


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接