[英]How to find if there are words repeated twice in a row
例如,我在MySQL數據庫表字段中有以下段落
“切斷天文物體的照射,就像在月球的日食中,當地球進入時”
這里“ 對象 ”這個詞連續出現兩次(彼此相鄰)。
我想檢查這種情況是否出現在同一個表中的其他記錄中。 使用PHP和MySQL有一種簡單的方法嗎?
if (preg_match('/\\b(\\w+)\\s\\1\\b/', $subject)) {
//has repetition
}
您可以將以下正則表達式用於以下目的:
(\b\w+)(?:\s+\1)+
要么
\b(\w+)(?:\s+\1)+
這將匹配任意數量的重復單詞,單詞之間有任意數量的空格。
請注意,根據MySQL或PHP正則表達式引擎的工作方式(無論使用哪種方式),反斜杠(可能還有括號)可能需要進行轉義,並且您需要使用正則表達式引擎用於模式的任何分隔符。 (雖然如果MySQL不允許像Matt所說的反向引用,那么你只需要使用PHP。)
編輯:更新了字邊界檢查; 沒有意識到\\w
不會自動對preg模式進行單詞邊界檢查。
SELECT * FROM表WHERE字段REGEXP'搜索詞'
將返回包含適當術語的行。
關於什么
SELECT * FROM yourtable WHERE yourfield LIKE "%yourword%%yourword%"
在我對localhost的快速測試用例中,它有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.