匹配统一句子结构的模式

时间:2012-11-19 15:36:16

标签: php regex sentence

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

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

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

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

我需要帮助提出一个与此匹配的正则表达式模式,并允许我解析[train]和[stop]。我的正则表演功夫很弱,我可以帮忙。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

preg_match("/^Take\sthe\s([\d\w]+)\sbound\strain\sto\s([\w\d]+)$/", $string, $hits);

这样的事情应该有效

答案 2 :(得分:0)

根据我的理解,您似乎想要进行某种模板操作,这需要重新设计句子结构和格式。

我看到以下内容:

Take the %start% bound train to %stop%

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

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

我知道这解决了你的问题,但它会提供一个更好的解决方案,而不是捕获将来/可能难以维护的所有正则表达式。