I have string in a text file containing some text as follows:
txt = \"java.awt.GridBagLayout.layoutContainer\"
I am looking to get everyth
This seems to do what you want with re.findall()
: (java\S?[^A-Z]*)\.[A-Z]
Without using capture groups, you can use lookahead (the (?= ... )
business).
java\s?[^A-Z]*(?=\.[A-Z])
should capture everything you're after. Here it is broken down:
java //Literal word "java"
\s? //Match for an optional space character. (can change to \s* if there can be multiple)
[^A-Z]* //Any number of non-capital-letter characters
(?=\.[A-Z]) //Look ahead for (but don't add to selection) a literal period and a capital letter.
Make your pattern match a period followed by a capital letter:
'(java\S?[^A-Z]*?)\.[A-Z]'
Everything in capture group one will be what you want.