仅当它跟在数字后面时,如何从字符串中删除字符?
How to remove a character from a string only if it follows a number?
我有几行地址格式的数据,我想从每个地址中删除门牌号。
到目前为止,我已经能够使用以下方法删除号码:
<?php
$string = '25a Test Lane';
if (preg_match("/[0-9]/", $string)) {
$string = preg_replace("/[0-9]/", "", $string);
}
?>
$string 然后变为 'a Test Lane' - 但我将如何删除 'a' 呢?请记住 'a' 可以是数字后面的任何字母。我想删除紧跟数字的任何字符(中间没有 space)。
您可以使用
trim(preg_replace("/\b\d+[a-zA-Z]*\b/", "", $string))
trim(preg_replace("/\b\d+[a-zA-Z]?\b/", "", $string))
这里是regex demo。 注意:如果您只想在数字后添加一个字母,请将 [a-zA-Z]*
中的 *
替换为 ?
。
详情:
\b
- 单词边界
\d+
- 一位或多位数字
[a-zA-Z]*
- 零个或多个 ASCII 字母
[a-zA-Z]?
- 一个或零个 ASCII 字母
\b
- 单词边界。
参见 PHP demo:
$string = '25a Test Lane';
$string = trim(preg_replace("/\b\d+[a-zA-Z]*\b/", "", $string));
echo $string;
// => Test Lane
我有几行地址格式的数据,我想从每个地址中删除门牌号。
到目前为止,我已经能够使用以下方法删除号码:
<?php
$string = '25a Test Lane';
if (preg_match("/[0-9]/", $string)) {
$string = preg_replace("/[0-9]/", "", $string);
}
?>
$string 然后变为 'a Test Lane' - 但我将如何删除 'a' 呢?请记住 'a' 可以是数字后面的任何字母。我想删除紧跟数字的任何字符(中间没有 space)。
您可以使用
trim(preg_replace("/\b\d+[a-zA-Z]*\b/", "", $string))
trim(preg_replace("/\b\d+[a-zA-Z]?\b/", "", $string))
这里是regex demo。 注意:如果您只想在数字后添加一个字母,请将 [a-zA-Z]*
中的 *
替换为 ?
。
详情:
\b
- 单词边界\d+
- 一位或多位数字[a-zA-Z]*
- 零个或多个 ASCII 字母[a-zA-Z]?
- 一个或零个 ASCII 字母\b
- 单词边界。
参见 PHP demo:
$string = '25a Test Lane';
$string = trim(preg_replace("/\b\d+[a-zA-Z]*\b/", "", $string));
echo $string;
// => Test Lane