使用正则表达式移动字符串中的多个字母
Move multiple letters in string using regex
我想使用正则表达式移动字符串中的两个字母。
W28
L36
W29-L32
应改为:
28W
36L
29W-32L
数字在 25
和 44
之间变化。需要移动的字母总是 "W" and/or "L" 并且当它们都存在于字符串中时 "W" 总是第一个。
我需要使用 PHP 使用单个正则表达式来执行此操作。任何想法都会很棒!
编辑:
我是正则表达式的新手,尝试了很多东西都没有成功。我最接近的是对每种可能性使用 "/\b(W34)\b/"
。我还发现了一些关于在 replace 函数中使用变量的信息,但没有成功使用这些变量。
您的正则表达式 \b(W34)\b
与整个单词 W34
完全匹配。你需要一个 character class to match W
or L
, and some alternatives to match the numeric range, and use the most of capturing groups.
您可以使用以下正则表达式替换:
$re = '/\b([WL])(2[5-9]|3[0-9]|4[0-4])\b/';
$str = "W28\nL36\nW29-L32";
$result = preg_replace($re, "", $str);
echo $result;
在这里,([WL])
匹配并捕获 W
或 L
到第 1 组,(2[5-9]|3[0-9]|4[0-4])
匹配从 25 到 44 的整数并捕获到第 2 组。 Backreferences 用于反转替换字符串中组的顺序。
这里是a regex demo,以备日后调整。
我想使用正则表达式移动字符串中的两个字母。
W28
L36
W29-L32
应改为:
28W
36L
29W-32L
数字在 25
和 44
之间变化。需要移动的字母总是 "W" and/or "L" 并且当它们都存在于字符串中时 "W" 总是第一个。
我需要使用 PHP 使用单个正则表达式来执行此操作。任何想法都会很棒!
编辑:
我是正则表达式的新手,尝试了很多东西都没有成功。我最接近的是对每种可能性使用 "/\b(W34)\b/"
。我还发现了一些关于在 replace 函数中使用变量的信息,但没有成功使用这些变量。
您的正则表达式 \b(W34)\b
与整个单词 W34
完全匹配。你需要一个 character class to match W
or L
, and some alternatives to match the numeric range, and use the most of capturing groups.
您可以使用以下正则表达式替换:
$re = '/\b([WL])(2[5-9]|3[0-9]|4[0-4])\b/';
$str = "W28\nL36\nW29-L32";
$result = preg_replace($re, "", $str);
echo $result;
在这里,([WL])
匹配并捕获 W
或 L
到第 1 组,(2[5-9]|3[0-9]|4[0-4])
匹配从 25 到 44 的整数并捕获到第 2 组。 Backreferences 用于反转替换字符串中组的顺序。
这里是a regex demo,以备日后调整。