re ಮೊಡ್ಯೂಲ್ (ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು)
ಪೈಥಾನ್ನ re ಮೊಡ್ಯೂಲ್, ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳ (Regular Expressions ಅಥವಾ Regex) ಮೂಲಕ ಪಠ್ಯದಲ್ಲಿ ಪ್ಯಾಟರ್ನ್ಗಳನ್ನು ಹುಡುಕಲು, ಹೊಂದಿಸಲು, ಮತ್ತು ನಿರ್ವಹಿಸಲು ಶಕ್ತಿಯುತ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ಗಳು ಎಂದರೆ ಪ್ಯಾಟರ್ನ್ಗಳನ್ನು ವಿವರಿಸುವ ಒಂದು ವಿಶೇಷ ಸಿಂಟ್ಯಾಕ್ಸ್. ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಲು, ಫೋನ್ ಸಂಖ್ಯೆಗಳನ್ನು ಹೊರತೆಗೆಯಲು, ಅಥವಾ ಪಠ್ಯವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಇವು ಅತ್ಯಂತ ಉಪಯುಕ್ತ.
ಪ್ರಮುಖ re ಫಂಕ್ಷನ್ಗಳು
1. re.search(pattern, string)
ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿ ಪ್ಯಾಟರ್ನ್ಗೆ ಹೊಂದುವ ಮೊದಲ ಸಂಭವನೀಯತೆಯನ್ನು ಹುಡುಕುತ್ತದೆ. ಹೊಂದಾಣಿಕೆ ಸಿಕ್ಕರೆ, ಒಂದು ಮ್ಯಾಚ್ ಆಬ್ಜೆಕ್ಟ್ (match object) ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ None ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
import re
text = "ನನ್ನ ಫೋನ್ ಸಂಖ್ಯೆ 98765-43210 ಆಗಿದೆ."
pattern = r"\d{5}-\d{5}" # 5 ಅಂಕಿಗಳು, ಹೈಫನ್, 5 ಅಂಕಿಗಳು
match = re.search(pattern, text)
if match:
print(f"ಹೊಂದಾಣಿಕೆ ಕಂಡುಬಂದಿದೆ: {match.group()}") # .group() ಹೊಂದಾಣಿಕೆಯಾದ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ನೀಡುತ್ತದೆ
else:
print("ಹೊಂದಾಣಿಕೆ ಕಂಡುಬಂದಿಲ್ಲ.")
2. re.match(pattern, string)
re.search() ನಂತೆಯೇ, ಆದರೆ ಇದು ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ಸ್ಟ್ರಿಂಗ್ನ ಪ್ರಾರಂಭದಲ್ಲಿ ಮಾತ್ರ ಹುಡುಕುತ್ತದೆ. ಸ್ಟ್ರಿಂಗ್ನ ಪ್ರಾರಂಭದಲ್ಲಿ ಹೊಂದಾಣಿಕೆಯಾಗದಿದ್ದರೆ, ಅದು None ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
import re
text = "ಪೈಥಾನ್ ಒಂದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ."
# 'ಪೈಥಾನ್' ಸ್ಟ್ರಿಂಗ್ನ ಪ್ರಾರಂಭದಲ್ಲಿದೆ
match = re.match(r"ಪೈಥಾನ್", text)
print(match) # ಮ್ಯಾಚ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ
# 'ಪ್ರೋಗ್ರಾಮಿಂಗ್' ಸ್ಟ್ರಿಂಗ್ನ ಮಧ್ಯದಲ್ಲಿದೆ
match = re.match(r"ಪ್ರೋಗ್ರಾಮಿಂಗ್", text)
print(match) # None
3. re.findall(pattern, string)
ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿ ಪ್ಯಾಟರ್ನ್ಗೆ ಹೊಂದುವ ಎಲ್ಲಾ ಸಂಭವನೀಯತೆಗಳನ್ನು ಹುಡುಕಿ, ಅವುಗಳ ಒಂದು ಲಿಸ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
import re
text = "ರವಿಕಿರಣ ಅವರ ಇಮೇಲ್ [email protected] ಮತ್ತು ನಿಶ್ಕಲಾ ಅವರದ್ದು [email protected]."
emails = re.findall(r"\w+@\w+\.\w+", text)
print(f"ಕಂಡುಬಂದ ಇಮೇಲ್ಗಳು: {emails}")
# Output: ['[email protected]', '[email protected]']
4. re.sub(pattern, repl, string)
sub ಎಂದರೆ substitute. ಇದು ಸ್ಟ್ರಿಂಗ್ನಲ್ಲಿ ಪ್ಯಾಟರ್ನ್ಗೆ ಹೊಂದುವ ಎಲ್ಲಾ ಸಂಭವನೀಯತೆಗಳನ್ನು repl (replacement) ಸ್ಟ್ರಿಂಗ್ನೊಂದಿಗೆ ಬದಲಾಯಿಸುತ್ತದೆ.
import re
text = "ನನ್ನ ಫೋನ್ ಸಂಖ್ಯೆ 987-654-3210."
# ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ಮರೆಮಾಚುವುದು
censored_text = re.sub(r"\d", "*", text)
print(censored_text)
# Output: ನನ್ನ ಫೋನ್ ಸಂಖ್ಯೆ ***-***-****.
ಸಾಮಾನ್ಯ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್ಪ್ರೆಶನ್ ಪ್ಯಾಟರ್ನ್ಗಳು
| ಪ್ಯಾಟರ್ನ್ | ವಿವರಣೆ |
|---|---|
. |
ಯಾವುದೇ ಒಂದು ಅಕ್ಷರ (ನ್ಯೂಲೈನ್ ಹೊರತುಪಡಿಸಿ). |
\d |
ಯಾವುದೇ ಅಂಕಿ (0-9). |
\D |
ಅಂಕಿ ಅಲ್ಲದ ಯಾವುದೇ ಅಕ್ಷರ. |
\w |
ಯಾವುದೇ ವರ್ಡ್ ಕ್ಯಾರೆಕ್ಟರ್ (a-z, A-Z, 0-9, _). |
\W |
ವರ್ಡ್ ಕ್ಯಾರೆಕ್ಟರ್ ಅಲ್ಲದ ಯಾವುದೇ ಅಕ್ಷರ. |
\s |
ಯಾವುದೇ ವೈಟ್ಸ್ಪೇಸ್ (space, tab, newline). |
\S |
ವೈಟ್ಸ್ಪೇಸ್ ಅಲ್ಲದ ಯಾವುದೇ ಅಕ್ಷರ. |
^ |
ಸ್ಟ್ರಿಂಗ್ನ ಪ್ರಾರಂಭ. |
$ |
ಸ್ಟ್ರಿಂಗ್ನ ಅಂತ್ಯ. |
* |
ಹಿಂದಿನ ಅಕ್ಷರ 0 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಪುನರಾವರ್ತನೆ. |
+ |
ಹಿಂದಿನ ಅಕ್ಷರ 1 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಪುನರಾವರ್ತನೆ. |
? |
ಹಿಂದಿನ ಅಕ್ಷರ 0 ಅಥವಾ 1 ಬಾರಿ ಪುನರಾವರ್ತನೆ. |
{n} |
ಹಿಂದಿನ ಅಕ್ಷರ ನಿಖರವಾಗಿ n ಬಾರಿ ಪುನರಾವರ್ತನೆ. |
{n,m} |
ಹಿಂದಿನ ಅಕ್ಷರ n ರಿಂದ m ಬಾರಿ ಪುನರಾವರ್ತನೆ. |
[...] |
ಬ್ರಾಕೆಟ್ನಲ್ಲಿರುವ ಯಾವುದೇ ಒಂದು ಅಕ್ಷರ (ಉದಾ: [abc]). |
(...) |
ಒಂದು ಗುಂಪನ್ನು (group) ರಚಿಸುತ್ತದೆ. |
re ಮೊಡ್ಯೂಲ್, ಡೇಟಾ ಕ್ಲೀನಿಂಗ್, ವ್ಯಾಲಿಡೇಶನ್, ಮತ್ತು ವೆಬ್ ಸ್ಕ್ರೇಪಿಂಗ್ನಂತಹ ಪಠ್ಯ-ಆಧಾರಿತ ಕಾರ್ಯಗಳಲ್ಲಿ ಅತ್ಯಂತ ಪ್ರಮುಖ ಪಾತ್ರ ವಹಿಸುತ್ತದೆ.