我有一个统一结构的句子,我想用正则表达式从句子中挑出某些单词。例如,句子结构如下:
["Take the"] + [train] + ["bound train to"] + [stop]
其中引号中的单词是硬编码的,而不带引号的单词是可变的。例如,基于该句子结构,以下句子适用:
- Take the L bound train to 1st street.
- Take the 1 bound train to neverland.
我需要帮助提出一个与此匹配的正则表达式模式,并允许我解析[train]和[stop]。我的正则表演功夫很弱,我可以帮忙。
答案 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
我知道这解决了你的问题,但它会提供一个更好的解决方案,而不是捕获将来/可能难以维护的所有正则表达式。