【问题标题】:How to parse these strings如何解析这些字符串
【发布时间】:2012-12-23 17:40:11
【问题描述】:

我在清理 XPaths 结果 (php/domxpath) 时遇到了一些问题。通常我会尝试使用正则表达式来实现这一点,但我注意到这里有很多反正则表达式的建议,所以我想问问是否有更好的解决方案来解决我的问题。

区分城市和邮政编码

Xpath 提供“10021 New York City”。邮编和城市有所不同。我将如何最好地拆分这些?

从 URL 中提取信息

Xpath 提供“http://www.whatever.com/?k=5000+z=6000”。如何最好地提取“k=500+z=600”?

从较长的文本段中提取信息

Xpath 提供“总尺寸可能为 3130 平方英尺或更多”。唯一一致的模式是数字后跟 ft²。

【问题讨论】:

  • 看来您的问题与 XPath 无关。您只需要解析文本...对吗?
  • @SteveWellens 是的 :) 我遇到了stackoverflow.com/questions/6423079/…,并认为 XPath 是一个可行的解决方案。
  • 仅供参考:我编辑了您的帖子以反映您的意图。
  • 您使用哪种语言? php?请用语言标记您的问题
  • @Bohemian 是的,更新了。

标签: php regex parsing


【解决方案1】:

1.

if (preg_match('/(\d+) (.*)/', $subject, $regs)) {
    $zip = $regs[1];
    $city = $regs[2];
}

2.

if (preg_match('/[^?]*$/', $subject, $regs)) {
    $size= $regs[0];
} 

(尽管您实际上应该为此使用 URL 解析器)

3.

if (preg_match('/\d+(?=ft²)/', $subject, $regs)) {
    $result = $regs[0];
} 

【讨论】:

    【解决方案2】:

    我不会说php,但这里是一个尝试:

    城市/邮编:

    zip = preg_replace ( '/.*(\d+).*/', '$1' , zipAndCity)
    city = preg_replace ( '/\d+/', '' , zipAndCity)
    

    网址参数:

    params = preg_replace ( '/.*\?/', '' , url)
    

    区域:

    area = preg_replace ( '/.*(\d+ft.*?(?= ))/', '$1' , areaDesc)
    


    如果有人发现语法错误,请编辑。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多