有了字符串"The cat is (black|white)"
,我可以使用模式/\((.*?)\|.*?\)/
并替换字符串中的第一个匹配项,得到结果短语"The cat is black"
。例如在PHP中,使用preg_replace('/\((.*?)\|.*?\)/', '$1', $phrase)
现在,我想扩展模式,以获得相同的结果字符串,即"The cat is black"
,也是从开始字符串"The (cat is (black|white)|dog is (black|white))"
。
这种模式应该对两种类型的短语都有效。
有可能吗?
谢啦,谢啦
2条答案
按热度按时间xsuvu9jc1#
这个问题并不适合直接使用正则表达式解决。然而,通过编写一个简短的递归函数来扩展模式所描述的替代短语,很容易解决这个问题。
你没有用语言标记这个问题,所以我将提供一个Python实现的例子。您应该能够将其翻译为您选择的语言。
给定函数
字符串
您可以将输入模式扩展为
型
gtlvzcf82#
我用PHP解决了这个问题:
字符串