删除字符串中间的字符

时间:2019-06-26 16:28:24

标签: php regex

假设我们有1234H2423436334H345345等行,我需要一个正则表达式来获取字符串12342423436334345345等。字符可能有所不同( (并非总是H),而是在这种情况下为H字符。最重要的是,结果字符串应位于数字为1的ONE子模式中。否则,该任务是基本任务。

我想要这样的东西-

(\ d + (? = H) (? <= H) \ d +)

但是由于未知原因,该设计无法正常工作。尽管可以单独使用-

(\ d + (? = H))

((? <= H) \ d +)

具有非捕捉替换的变体也不合适,因为该符号仍将到达常规结果-

(\ d + (? = H) (?: H) (? <= H) \ d +)

我认为有解决方案。帮我找到)

PS:例如-

preg_match ('((\d+)H(\d+))', '1234H242343', $matches);
<pre>
Array
    (
        [0] => 1234H242343
        [1] => 1234 // one subpattern
        [2] => 242343 // two subpattern
    )
</pre>

我需要一个解决方案

 <pre>
 Array
     (
         [0] => 1234H242343
         [1] => 1234242343 // one subpattern
     )
 </pre>

1 个答案:

答案 0 :(得分:0)

这将使用正则表达式删除所有字母(a-zA-Z)。

$string = '12394H2304';
$pattern = '#\D#';
$replacement = '';
$string = preg_replace($pattern, $replacement, $string);
echo $string;