我正在搜索几个小时来获取正则表达式以匹配字符串中的维度。 考虑以下类型的字符串,
120x200
100' X 130'
4 acres
0.54
0.488 (90x223)/ GIS0.78
90x160
100x149.7
143.76 X 453.52
6.13 per tax bill
120x378 per tax roll
我希望O / P只包含尺寸,即使是'X'或'x' 从上面的字符串中,预期的输出是
120x200,100' X 130',0,0,90x223,90x160,100x149.7,143.76 X 453.52,0,120x378
有没有可能的注册?或任何其他替代方案?
由于
答案 0 :(得分:2)
这似乎有效:
<?php
$str = <<<EOD
120x200
100' X 130'
4 acres
0.54
0.488 (90x223)/ GIS0.78
90x160
100x149.7
143.76 X 453.52
6.13 per tax bill
120x378 per tax roll
EOD;
$lines = explode("\n", $str);
foreach($lines as $line) {
if (preg_match('/-?(\d+(?:\.\d+)?(\'|ft|yd|m|")?)\s*x\s*-?(\d+(?:\.\d+)?(?:\\2)?)/i', $line, $match)) {
echo "{$match[1]}x{$match[3]}\n";
} else {
echo "0\n";
}
}
如果要匹配更多内容,可以在第3个带括号的表达式中添加更多度量单位,但这样可以匹配整数,实数和可选的度量单位。
答案 1 :(得分:0)
这应该让你开始:
\d+(\.\d+)?['"]?\s*[xX]\s*\d+(\.\d+)?['"]?
但是,它并未涵盖所有情况,因为它们太定制,无法由正则表达式处理。 我建议使用自定义方法来解析不同情况下的输入。