2

我有一个结构统一的句子,我想使用正则表达式从句子中挑选出某些单词。例如句子结构如下:

["Take the"] + [train] + ["bound train to"] + [stop]

其中引号中的单词是硬编码的,而没有引号的单词是可变的。例如,基于该句子结构,以下句子适用:

- Take the L bound train to 1st street.
- Take the 1 bound train to neverland. 

我需要帮助想出一个与此匹配的正则表达式模式,并允许我解析出 [train] 和 [stop]。我的正则表达式 kunfu 很弱,我需要一些帮助。

4

3 回答 3

3

非常简单的正则表达式:'^Take the (.*) bound train to (.*)\.$'存储[train]在第一个捕获组和[stop]第二个捕获组中。

^               # Match the start of the string
Take the        # Match the literal string
(.*)            # Capture the [train]
bound train to  # Match the literal string
(.*)            # Capture the [stop]
\.              # Match the fullstop 
$               # Match the end of string
于 2012-11-19T15:43:20.213 回答
0
preg_match("/^Take\sthe\s([\d\w]+)\sbound\strain\sto\s([\w\d]+)$/", $string, $hits);

像这样的东西应该工作

于 2012-11-19T15:44:23.573 回答
0

根据我的理解,您似乎想做某种模板,这需要重新修改您的句子结构和格式。

我看到以下内容:

Take the %start% bound train to %stop%

这很容易用您需要的特定单词替换。

/%stop%/Union Station
/%stop%/East Station

我知道这解决了您的问题,但它会比捕获所有将来会/可能变得难以维护的正则表达式提供更好的解决方案。

于 2012-11-19T16:09:26.923 回答