package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^[A-Z](([A-Z]{1,2}[a-z0-9]+)+([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{0,3})*|[A-Z]{1,2})$`)
var str = `ABCD
ABCDE
snake_case
camelCase
2PascalCase
streamIOIO
gREATERDtha
MdeADFAFdsADFads
DeviceSNSD
AabcABCD
AabcABCDabcABCD
ABabcABCD
ABabcABCDabcABCD
ABCabcABCD
ABCabcABCDabcABCDabcABCDabcABCD
ABCDabcABCD
ABCDabcABCDabcABCDabcABCDabcABCD
HTMLParser
ContextHTMLParser
ABabcABCDbcABC
ABCDabcABC
ABCDabcAB
ABCDabcA
CamelCa_1
HELLO
AaABC
PacalCasePacalCasePacalCasePacalCasePacalCasePacalCase
AabcABCabcABC
MoeADFdsADFads
ABCabcABC
ABCabcAB
ABabcABC
ABabcAB
AabcAB
ABCabcABCabcA
ABCabcA
Aabc123
AabcABC
A
AB
ABC
StreamIO
IOStream
DeviceID
DeviceSNS
Context
PascalCase
Pascal2Case
PascalCaseA
Pascal2CaseA
ModeA
Mode2A
Mode2A2
Mode2A2A
CreateAMode
CreateBMode
MadeEasy
WonderFul
AndMe
HtmlParser
H
AaA
Camel01C
Camel01c01
Camel01C01
Camel01CC01
Camel0a1c1
Camel0a1C1
Camel0ac1b1C1
CamelC
CamelC1
CamelCA
CamelCa1
IbsReleaseTestVerificationRegressionSuite
IbsReleaseTestVerificationRegressioNSuite
IbsReleaseTestVerificationRegressioN
XmlHttpRequest
NewCustomerId
InnerStopwatch
SupportsIpv6OnIos
YouTubeImporter
YoutubeImporter
Affine3D`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/