#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mui)(?:[^\p{Script=Latin}\s\w;:.,\-[\](){}'"+\/=<>])\B|(?:(?:[\p{Script=Latin}]|[^\s\w;:.,\-[\](){}'"+\/=<>]){2,}(?:(?:[\p{Script=Latin}]|[^\s\w+.,–:;\/\\=<>])?(?:[\p{Script=Latin}]|[^\s\w;\-:.,\[\](){}'"+\/\\=<>]))*)|(?:(?:[0-9\p{Script=Latin}]|[^\s\w;:.,[\](){}\-'"+\/\\=<>])(?:(?:[0-9\p{Script=Latin}]|[^\s\w+\-:;\/\\=<>])?(?:[0-9\p{Script=Latin}]|[^\s\w;:.,\-[\](){}'"+\/\\=<>]))*)"
Local $sString = "Bão Yagi (được Việt Nam định danh là bão số 3, được phía Philippines đặt tên bão Enteng - tiếng Anh: Severe Tropical Storm Enteng , nguyên văn 'Bão nhiệt đới dữ dội Enteng')" & @CRLF & _
"" & @CRLF & _
"Some legal "[d]ocuments" contain corrected spel[l]ing, gram(m)ar, or simple typos; and lots of references[1]. By Extension, I included curl{e}y brackets, but not tag brack<e>ts, which are not seenin modern legal documents." & @CRLF & _
"" & @CRLF & _
"These.are.properly.separated.even.U.S.A., and multiple punctuations are properly ignored." & @CRLF & _
"" & @CRLF & _
"A. Multiple" & @CRLF & _
"B. Choices" & @CRLF & _
"" & @CRLF & _
"-ABC-DEF-" & @CRLF & _
"-A-B-C-D-" & @CRLF & _
"-1-2-3-4-" & @CRLF & _
"-test-" & @CRLF & _
"" & @CRLF & _
".ABC.DEF." & @CRLF & _
".AB.CD.EF.D." & @CRLF & _
".A.B.C.D.E." & @CRLF & _
".123.456.789." & @CRLF & _
".12.34.56.78." & @CRLF & _
".1.2.3.4." & @CRLF & _
"" & @CRLF & _
"cod3 var1aBl3s" & @CRLF & _
"test.U.S.A.test" & @CRLF & _
"" & @CRLF & _
"We'd want hyphenated words in cases when large words are broken for wrapping in tight column news papers/megazines, while we can still properly separate numbers such as "30-35 pages"." & @CRLF & _
"" & @CRLF & _
"Non-Latin character are separated per character:" & @CRLF & _
"出典: フリー百科事典『ウィキペディア(Wikipedia)』" & @CRLF & _
"ウィキペディアには現在この名前の項目はありません。" & @CRLF & _
"" & @CRLF & _
"Acceptable failed cases:" & @CRLF & _
"" & @CRLF & _
"- [E]xpected: "[" is considered external "wrapper/enclosure", while the internal "wrappers" are included so that they can be further processed/removed in the future." & @CRLF & _
"" & @CRLF & _
"- test.U.S.A.test: this happens when no space trailing textContents of a block-level elemetn in HTML files." & @CRLF & _
"" & @CRLF & _
"- 『ウィキペディア(Wikipedia)』: mixed languages" & @CRLF & _
"" & @CRLF & _
"- CamelCasing s not separated, but can be easily separated in "post-processing step, even though _snake_casing_ works fine by happenstance." & @CRLF & _
"" & @CRLF & _
"-cod3 var1aBl3s: mixing letters and numbers. It's not intentional, but not a big deal when the side-effect is new word is always started with a number."
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm