2016-01-08 3 views
0

Я хочу найти, существует ли определенная структура слов в строке. Например, в приведенной ниже строке я хочу знать, есть ли слова «пожелать» и «разрешить». Здесь, упорядочивая вопросы, поэтому я хочу только вернуть True, если перед «allow» появляется «желание». «Я желаю платформа дала возможность разрешить один изменить настройки» Результат: Истинный контрпример: «Я позволил мои настройки изменить, только жаль, это может быть отменено» Результат: Ложныешаблон слов существует в строке

Любая помощь будет оценена

+0

изменил теги, так что это немного более актуальной, она не имеет ничего особенного делать с 'nlp' или' nltk'. – alvas

ответ

2

я пошел Regex101.com и создал Regex выражение, которое отвечает вашим потребностям:

/wish(.?|.*)allow/ 

Это означает, что «найти слово„желание“в любом месте текста, а затем ноль, о ne или многие другие символы, за которым следует слово «allow».

Regex101.com - отличная песочница для создания выражений Regex. Каждый раз, когда я не уверен, как следует форматировать соответствие шаблону Regex, я использую этот инструмент.

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> 
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 
Смежные вопросы