单词的模式存在于字符串中

时间:2016-01-08 17:40:18

标签: python regex string parsing

我想查找字符串中是否存在某种单词模式。例如,在下面的字符串中,我想知道是否出现“愿望”和“允许”这两个词。在这里,订购很重要,所以我想只在“允许”出现在“允许”之前返回True。 “我希望平台能够让人们改变设置” 结果:是的 一个反例: “我允许我的设置改变,只希望这可以逆转” 结果:错误

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

我去了Regex101.com并创建了一个符合您需求的Regex表达式:

/wish(.?|.*)allow/

这意味着"找到' wish'文本中的任何位置,后跟零个,一个或许多其他字符,后跟单词' allow'"。

Regex101.com是一款用于构建Regex表达式的沙盒。任何时候我都不确定应该如何格式化正则表达式模式匹配,我使用这个工具。

答案 1 :(得分:0)

您可以尝试使用我在javascript中实现的概念。

你总是得到刚出现在南瓜之前的结果苹果。

<html>
<body>

<p>Click the button to display the last position of the element "Apple" before pumpkin</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var fruits = ["Banana","Orange","Apple","Mango","Banana","Orange","Apple","Mango","pumpkin","Apple"];
    var a = fruits.indexOf("pumpkin");
    var b = fruits.lastIndexOf("Apple",a);
    var x = document.getElementById("demo");
    x.innerHTML = b;
}
</script>


</body>
</html>

答案 2 :(得分:0)

你实际上并不需要正则表达式:

def checkwordorder(phrase, word1, word2):
    try:
        return phrase.lower().index(word1.lower()) < phrase.lower().index(word2.lower())
    except ValueError:
        return False

>>> checkwordorder('I wish the platform gave the ability to allow one to change settings', 'wish', 'allow')
True
>>> checkwordorder('I allowed my setting to change, only wish this could be reversed', 'wish', 'allow')
False