たとえば、テキスト(私の場合はLaTeXソース)ですべての繰り返しのミスプリントを見つけることは可能ですか?
... The Lagrangian that that includes this potential ...
... This is confimided by the the theorem of ...
正規表現を使用していますか?
お気に入りのツール(sed、grep)/言語(python、perl、...)を使用します
たとえば、テキスト(私の場合はLaTeXソース)ですべての繰り返しのミスプリントを見つけることは可能ですか?
... The Lagrangian that that includes this potential ...
... This is confimided by the the theorem of ...
正規表現を使用していますか?
お気に入りのツール(sed、grep)/言語(python、perl、...)を使用します
このJavaScriptの例は機能します:
var s = '... The Lagrangian that that includes this potential ... This is confimided by the the theorem of ...'
var result = s.match(/\b(\w+)\s\1\b/gi)
結果:
["that that", "the the"];
正規表現:
/\s(\w+)\s\1/gi
# / --> Regex start,
# \b --> A word boundary,
# (\w+) --> Followed by a word, grouped,
# \s --> Followed by a space,
# \1 --> Followed by the word in group 1,
# \b --> Followed by a word boundary,
# /gi --> End regex, (g)lobal flag, case (i)nsensitive flag.
正規表現がまたはのような文字列と一致しないようにするために、単語の境界が追加され"hot hotel"
ます"nice ice"
egrep -w
と正規表現での後方参照の使用(\w+)\s+\1
:
$ echo "The Lagrangian that that includes this potential" | egrep -ow "(\w+)\s\1"
that that
$ echo "This is confimided by the the theorem of" | egrep -ow "(\w+)\s+\1"
the the
注:この-o
オプションは、一致する行の一部のみを表示します。これは、実際に一致するものを示すのに役立ちます。おそらく、そのオプションを削除して、--color
代わりに使用することをお勧めします。この-w
オプションは、単語全体に一致することが重要です。そうでない場合is is
は、で一致しThis is con..
ます。
(\w+) # Matches & captures one or more word characters ([A-Za-z0-9_])
\s+ # Match one or more whitespace characters
\1 # The last captured word
使用 egrep -w --color "(\w+)\s+\1" file
すると、間違った繰り返しの可能性のある単語が明確に強調表示されるという利点があります。置換は、変更される、reggae raggae sauce
またはbeautiful beautiful day
変更されるなど、多くの正しい例ほど賢明ではない可能性があります。
これを試して:
grep -E '\b(\w+)\s+\1\b' myfile.txt
重複する単語を削除する方法を示すPythonの例:
In [1]: import re
In [2]: s1 = '... The Lagrangian that that includes this potential ...'
In [3]: s2 = '... This is confimided by the the theorem of ...'
In [4]: regex = r'\b(\w+)\s+\1\b'
In [5]: re.sub(regex, '\g<1>', s1)
Out[5]: '... The Lagrangian that includes this potential ...'
In [6]: re.sub(regex, '\g<1>', s2)
Out[6]: '... This is confimided by the theorem of ...'