簡體   English   中英

正則表達式一個句子中的兩個給定單詞

[英]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

這里有一組非常好的選項http://www.regular-expressions.info/near.html

您也可以在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM