-3

是否可以编写一个匹配不同模式的正则表达式,以便从文本中提取数据,如下例所示:

City A is 10 minutes away from City B and 6 minutes from City C.

我想获得第一个城市(城市 A),然后是与其相关的每个城市及其各自的距离。

在这种情况下,我需要这些信息:

City A
City B => 10
City C => 6

提前致谢

编辑:

城市数量不固定。第一个城市可以链接到 1 个或 N 个城市。

以 1 个城市为例:

City A is 10 minutes away from City B.

以 3 为例:

City A is 10 minutes away from City B, 6 minutes from City C and 8 minutes from City D.
4

3 回答 3

1

如果您想解析包含固定单词组合的特定文本,例如您的示例,那么是的,它适用于正则表达式过滤。否则你最好按照上面的建议使用语法和词法分析器。

于 2013-10-26T17:12:11.207 回答
1

也许这

 #  "\\G(?:(?:^(?<TimeBase>)\\s*City\\s+(?<CityBase>\\w+))|(?:(?:\\s+(?:is|and)|\\s*,)\\s+(?<TimeExtra>\\d+)\\s+minutes(?:\\s+away)?\\s+from\\s+City\\s+(?<CityExtra>\\w+)))"

 \G  
 (?:
      (?:
           ^ 
           (?<TimeBase> )
           \s* City \s+ 
           (?<CityBase> \w+ )
      )
   |  
      (?:
           (?:
                \s+ 
                (?: is | and )
             |  \s* , 
           )
           \s+ 

           (?<TimeExtra> \d+ )
           \s+ minutes 
           (?: \s+ away )?
           \s+ from \s+ City \s+ 
           (?<CityExtra> \w+ )
      )
 )
于 2013-10-26T18:27:55.177 回答
-1

当然有可能;什么都可以做。

一个更好的问题是:“这个问题有更好的解决方案吗?”

也许您想考虑一个简单的语法、词法分析器和解析器。

如果 正规表达式 没有削减它,您可以尝试ANTLR或 JavaCC。

于 2013-10-26T17:06:33.103 回答