簡體   English   中英

正則表達式中單詞之間的 n 個字符

[英]n characters between words in regex

我想使用正則表達式(在 R,版本 3.3.1 中)匹配以下模式:單詞,最多 10 個字符的任何內容 - 單詞。

我嘗試了以下代碼: "word1".{0,10}"word2"$和其他一些類似的組合,但沒有成功。

以下是一些輸出示例:

x <- c('word1 word2',           # TRUE
       'word1 bla word2',       # TRUE
       'word1 blablabla word2') # FALSE

等等


編輯:我嘗試了您的所有建議,但沒有一個有效。 我嘗試從 DATA API 查詢一些數據。 在查詢部分,我必須寫出我想要獲取的內容。 例如這有效: query = list(q = paste0("\\"", "SomeSurname", ". ", "SomeName", ". ", "\\"", "~5", sep = "")) ),但是如果我想以姓名和姓氏之間最多可以有 10 個任意字符的方式添加約束,則它不起作用: query = list(q = paste0("\\"", prebivaliste[i,"prezime" ], ".{0,5}", prebivaliste[i,"ime"],"\\"", "~5", sep = "")))

我認為這應該符合您的要求:

(word1)(?:.){0,10}(word2)

(word1) - capture the literal text: "word1"
(?:.) - Set up non capturing group for any character
{0,10} - 0-10 times
(word2) - capture the literal text "word2"

grepl('(word1)(?:.){0,10}(word2)', x)
# [1]  TRUE  TRUE FALSE

假設您想捕獲任何單詞而不是 word1/word2,您可以使用\\\\w\\\\w+來匹配

實例: https : //regex101.com/r/xJ3yZ2/1

也許這很簡單:

nchar(gsub('word1|word2','',string))<=10
#[1]  TRUE  TRUE FALSE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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