, , , , ( , , ). , :
[^A-Z]*[A-Z]{3}[^A-Z]*
[A-Z]{3} 3 , [^A-Z]* ( ). , :
import re
theString = "ABCDE"
pattern = re.compile(r"([^A-Z]*)([A-Z]{3})([^A-Z]*)")
result = pattern.search(theString)
if result:
print("Matched string: {" + result.group(0) + "}")
print("Sub match 1: {" + result.group(1) + "} 2. {" + result.group(2) + "} 3. {" + result.group(3) + "}")
else:
print("No match")
Matched string: {ABC}
Sub match 1: {} 2. {ABC} 3. {}
ideone
, ? [^A-Z]* "", , .
, , , , - :
([^A-Z]|^)[A-Z]{3}([^A-Z]|$)
, , (|^ OR |$ OR ). script , ABCDE, . abcABC, :
import re
theString = "abcABC"
pattern = re.compile(r"([^A-Z]|^)([A-Z]{3})([^A-Z]|$)")
result = pattern.search(theString)
if result:
print("Matched string: {" + result.group(0) + "}")
print("Sub match 1: {" + result.group(1) + "} 2. {" + result.group(2) + "} 3. {" + result.group(3) + "}")
Matched string: {cABC}
Sub match 1: {c} 2. {ABC} 3. {}
[^A-Z] ( , ) , , 3 , .
, , , result.group(2) .
, ...
(?:[^A-Z]|^)([A-Z]{3})(?:[^A-Z]|$)
result.group(1), 3
, ( ), . , :
(?<![A-Z])[A-Z]{3}(?![A-Z])
(?<! ... ) lookbehind , . , [A-Z], .
(?! ... ) , (). , [A-Z], . .group() :
import re
theString = "abcABC"
pattern = re.compile(r"(?<![A-Z])[A-Z]{3}(?![A-Z])")
result = pattern.search(theString)
if result:
print("Matched string: {" + result.group() + "}")
ideone
, :)