В Java regex , \p{XDigit}
является просто сокращением для [0-9a-fA-F]
:
<b>POSIX character classes (US-ASCII only)</b>
\p{Lower} A lower-case alphabetic character: [a-z]
\p{Upper} An upper-case alphabetic character:[A-Z]
\p{ASCII} All ASCII:[\x00-\x7F]
\p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit} A decimal digit: [0-9]
\p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;?@[\]^_`{|}~
\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
\p{Print} A printable character: [\p{Graph}\x20]
\p{Blank} A space or a tab: [ \t]
\p{Cntrl} A control character: [\x00-\x1F\x7F]
<b>\p{XDigit} A hexadecimal digit: [0-9a-fA-F]</b>
\p{Space} A whitespace character: [ \t\n\x0B\f\r]
Тот же самый класс символов [0-9a-fA-F]
можно выразить с помощью [[:xdigit:]]
в регулярном выражении Go .
Вы можете написать шаблон Go следующим образом:
re:=regexp.MustCompile("([[:xdigit:]]{8})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]+)")
Или
re:=regexp.MustCompile("([0-9a-fA-F]{8})([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]{4})([0-9a-fA-F]+)")
Вы можете увидеть онлайн Go regex demo здесь и вот a Go demo :
package main
import (
"fmt"
"regexp"
)
const sample = `0a1f0a1f0a1f0a1f0a1f0a1f0a1f 0a1f0a1f0a1f0a1f0a1f0a1f0a1f`
func main() {
re := regexp.MustCompile(`([[:xdigit:]]{8})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]+)`)
repl := `$1-$2-$3-$4-$5`
fmt.Println(re.ReplaceAllString(sample, repl))
}
Результат: 0a1f0a1f-0a1f-0a1f-0a1f-0a1f0a1f 0a1f0a1f-0a1f-0a1f-0a1f-0a1f0a1f
.
Обратите внимание, что если вам необходимо заменить только первое вхождение (как в Java вы используете String#replaceFirst
), вы, вероятно, захотите сопоставить всю строку с .*?
перед шаблоном, который нужно заменить, а затем .*
после негочтобы сопоставить остальную часть строки, захватите их и отрегулируйте строку замены, чтобы она содержала заполнители для этих двух дополнительных частей строки:
re:=regexp.MustCompile("^(.*?)([[:xdigit:]]{8})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]+)(.*)$")
repStr := "$1$2-$3-$4-$5-$6$7"
См. еще одну демонстрацию регулярных выражений .