【问题标题】:Can I use Regex to return a value based on a specific match?我可以使用正则表达式根据特定匹配返回值吗?
【发布时间】:2014-06-02 17:19:28
【问题描述】:

如果我有与给定公司/实体的特定城市相关的地址列表,我是否可以使用正则表达式将该地址返回给我,而不是在代码中执行它(数据库查询)?例如,如果我有:

Manhattan|600 Broadway, 10023|
San Francisco|100 Taylor Street, 94133|

我可以有一些带有名称组的正则表达式,它返回该地址的内容类似于

(?<LOCATION_CITY>Manhattan)(?<LOCATION_BUILDING>600 Broadway)?|(?<LOCATION_CITY2>San Francisco)(?<LOCATION_BUILDING2>100 Taylor)?

我知道这不是正确的正则表达式,但作为起点,我想知道是否可以在扫描的文本块中使用一个匹配的名称组来返回一个不在文本块中的已知值。我要寻找的结果是:

  • LOCATION_CITY:曼哈顿
  • LOCATION_BUILDING:百老汇 600 号

  • LOCATION_CITY:旧金山
  • LOCATION_BUILDING:泰勒街 100 号

返回 Location City 因为它在文本中找到,并且返回 LOCATION_ADDRESS 因为找到关联的城市。

【问题讨论】:

  • 这是一个数据库查询..在这种情况下,什么软件(MySQL、PostgreSQL等)?
  • 您的位置城市和位置建筑物是否成对由|分隔?示例:LOCATION_CITY1|LOCATION_BUILDING1|LOCATION_CITY2|LOCATION_BUILDING2|
  • @Sam 它是 MySql 但是我希望能够在不向站点添加代码的情况下修改/添加正则表达式。正则表达式已设置为由站点调用并返回抓取值 (LOCATION_CITY),但希望在正则表达式本身中实现返回的地址。
  • @heroandtn3 我可以配对/安排城市和地址。

标签: regex


【解决方案1】:

怎么样:

^(?<LOCATION_CITY>[^|]+)\|(?<LOCATION_BUILDING>[^|,]+)

【讨论】:

  • 我不确定是否再次删除 City 将是在文本块中查找的已知值,并且根据找到的城市,只需推送地址即可。我试图避免找到一个城市然后查询数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2018-07-17
相关资源
最近更新 更多