さて、もちろん、私はそのようなregexp.Compile("[a-zA-Z]")
ような場合、両方を処理するために、私の正規表現を書くことができますが、私の正規表現は、ユーザが指定した文字列から構築された:s.Name
が名前であるGoで大文字と小文字を区別しない正規表現を実行するにはどうすればよいですか?
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
。北西によって北のようなものになる可能性があります。さて、私にとって最も明白な解決策は、各文字のための「[nNの]」s.Name
の各文字を歩くと書くことになります:
for i := 0; i < len(s.Name); i++ {
if s.Name[i] == " " {
fmt.Fprintf(str, "%s[ \\._-]", str);
} else {
fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i]))
}
}
しかし、私は、これはむしろ非エレガントなソリューションであると感じています。スピードは本当に問題ではありませんが、別の方法があるかどうかを知る必要があります。
しかし、データが多いとこれは遅すぎます。 regexp.Matchでunicode.SimpleFoldを呼び出すので、文字をupperに変更し、regexpを使用して一致させることをお勧めします。これはスピードです。 後は時間データである:(?I) '' ' #By正規表現ケースを無視する XCMP/binに/ otacmp -o BSP_2.2.0.html -f BSP /フレームワークコード/フレームワーク1271.94sユーザー-f 7.32sシステム97%cpu 21:54.95合計 #上に一致すると一致します XCMP/bin/otacmp -o BSP_2.2.0.html -f BSP/frameworks -fコード/フレームワーク263.87sユーザー8.99sシステム110%cpu 4 :06.44合計 '' ' – QJGui