[英]Regex two given words in one sentence
我想要一個正則表達式,它可以判斷兩個給定的單詞是否在一個句子中(詞序很重要)。 問題是我可以在句子中使用收縮,所以句號並不表示句子的結尾。 正則表達式中表示句子結束的部分是
\\.(\s+[A-Z]|\s*$)
圖案會是什么樣子?
你可以用這個:
(\b\w+\b)(?:[^.]|\.\s)*(\b\w+\b)
這基本上是說,匹配並捕獲一個單詞,然后任何不是句號的東西,或者一個句號跟在 ba 空格之后,任意次數,最后匹配並捕獲另一個單詞。
編輯:對於任一順序的給定單詞,請使用:
(\bWord1\b)(?:[^.]|\.\s)*(\bWord2\b)|(\bWord2\b)(?:[^.]|\.\s)*(\bWord1\b)
不是 c#,但你應該明白
for sentence in split_text_with_regex(text):
index_word1 = sentence.find(word1)
index_word2 = sentence.find(word2)
# do your thing
您也可以在 Visual Studio 本身中構建正則表達式。 請參閱此鏈接http://msdn.microsoft.com/en-us/library/2k3te2cs(VS.80).aspx第一段
所以我認為它是這樣的(未經測試):
(([\w\s]*\s)?Word1\s([\w\s]*)?\sWord2(\s[\w\s]*)?\.)(?=(\s+[A-Z]|\s*$))
編輯:考慮一下,這與標點符號(逗號、撇號)不匹配。 也許每個 [\\w\\s] 應該是 [^\\.] 或可能的字符列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.