需要有关正则表达式的帮助来解析此字符串


Need help regarding regular expression to parse this string

我不太了解正则表达式。并且需要帮助从字符串中获取一些数据,如果有人可以提供帮助,请。当我将字符串粘贴到此处时,它会格式化 HTML,因此请检查粘贴链接。

好的,所以我需要的是这个字符串中的每个字段数据,即"取件自:"、"交付到:"、"特殊说明:"等。并且格式将保持不变,即每次休息都会在那里,等等。只有内部数据会改变。

例如:取件地:美国华盛顿特区

所以我只需要回答"华盛顿特区,美国"。

检查帕斯特宾

谁能帮忙?我正在使用 php。

我认为这里不需要正则表达式。使用explode() .

$string = 'Pickup From: Washington, DC, USA';
$ar = explode(': ', $string);
if (count($ar) == 2) { # Want to check to make sure it's not empty!
   echo $ar[1]; # Echoes "Washington, DC, USA"
}

您可能需要所有字段:

$in = '<a href="example.com/edit"> Edit Your Delivery Details  </a>Pickup From: Washington, DC, USA<br>Deliver To: WDG Architecture, Connecticut Avenue Northwest, Washington, D.C., DC<br>Special Instruction: Yes, order fast<br>Person Name: sdf<br>Person Contact: dfsdf<br>Person Email: sdfsdasd@asd.asd<br>Pickup Day: Today<br>Pickup Time: ASAP<br><br>';
$lines = explode("<br>", $in);
$matches = array();
foreach ($lines as $line) {
    if (strstr($line, ":")) {
        $matches[] = preg_split("/'s*:'s*/", $line, 2);
    }
}
print_r($matches);

给:

Array
(
    [0] => Array
        (
            [0] =>  Edit Your Delivery Details  
Pickup From
            [1] => Washington, DC, USA
        )
    [1] => Array
        (
            [0] => Deliver To
            [1] => WDG Architecture, Connecticut Avenue Northwest, Washington, D.C., DC
        )
    [2] => Array
        (
            [0] => Special Instruction
            [1] => Yes, order fast
        )
    [3] => Array
        (
            [0] => Person Name
            [1] => sdf
        )
    [4] => Array
        (
            [0] => Person Contact
            [1] => dfsdf
        )
    [5] => Array
        (
            [0] => Person Email
            [1] => sdfsdasd@asd.asd
        )
    [6] => Array
        (
            [0] => Pickup Day
            [1] => Today
        )
    [7] => Array
        (
            [0] => Pickup Time
            [1] => ASAP
        )
)

正如你所看到的,它还不是很完美,但它能让你到达那里。

使用 strpos 查找</a>并修剪。如果你有更多的噪音,你也需要修剪它。


致投反对票的人:你能解释一下你的反对票吗?我错过了什么吗?

考虑以下正则表达式...

((?<=(Pickup'sFrom:)).*|(?<=(Deliver'sTo:)).*|(?<=(Special'sInstruction:)).*)

可以在没有正则表达式的情况下决定:

$test = "Pickup From: Washington, DC, USA";
$position = strrpos($test, ':');
$string = $test;
if ($position !== false)
    $string = substr($test, $position+1);
else
    $string = $test;
echo $string;

用要求表达:

$test = "Pickup From: Washington, DC, USA";
if (preg_match('/: ([^,]+, [A-Z]{2}, [A-Z]{3})$/', $test, $m) !== false)
    $string = $m[1];
else
    $string = $test;
print_r($string);