ವಿಷಯಕ್ಕೆ ತೆರಳಿ

ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳ ಪರಿಚಯ (Introduction to Regular Expressions)

ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳು (Regular Expressions), ಸಂಕ್ಷಿಪ್ತವಾಗಿ "regex" ಅಥವಾ "regexp", ಸ್ಟ್ರಿಂಗ್‌ಗಳಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಪ್ಯಾಟರ್ನ್‌ಗಳನ್ನು (patterns) ಹುಡುಕಲು, ಮ್ಯಾಚ್ ಮಾಡಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು ಬಳಸುವ ಒಂದು ಶಕ್ತಿಯುತ ಸಾಧನವಾಗಿದೆ. ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡುವುದರಿಂದ ಹಿಡಿದು, ಲಾಗ್‌ ಫೈಲ್‌ಗಳಿಂದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯುವವರೆಗೆ, ರೆಜೆಕ್ಸ್‌ಗಳು ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನಲ್ಲಿ ಅತ್ಯಂತ ಉಪಯುಕ್ತವಾಗಿವೆ.

ಪೈಥಾನ್‌ನಲ್ಲಿ, re ಮಾಡ್ಯೂಲ್ ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಬೇಕಾದ ಎಲ್ಲಾ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳನ್ನು ಏಕೆ ಬಳಸಬೇಕು?

  • ಪ್ಯಾಟರ್ನ್ ಮ್ಯಾಚಿಂಗ್: ಒಂದು ಸ್ಟ್ರಿಂಗ್ ನಿರ್ದಿಷ್ಟ ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು (ಉದಾ: ಫೋನ್ ಸಂಖ್ಯೆ, ಪಿನ್ ಕೋಡ್).
  • ಹುಡುಕುವುದು (Searching): ಒಂದು ದೊಡ್ಡ ಟೆಕ್ಸ್ಟ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಪ್ಯಾಟರ್ನ್‌ಗಳನ್ನು ಹುಡುಕಲು.
  • ಬದಲಾಯಿಸುವುದು (Substitution): ಸ್ಟ್ರಿಂಗ್‌ನಲ್ಲಿ ಮ್ಯಾಚ್ ಆದ ಭಾಗವನ್ನು ಬೇರೆ ಟೆಕ್ಸ್ಟ್‌ನೊಂದಿಗೆ ಬದಲಾಯಿಸಲು.
  • ವಿಭಜಿಸುವುದು (Splitting): ಒಂದು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪ್ಯಾಟರ್ನ್‌ನ ಆಧಾರದ ಮೇಲೆ ಭಾಗಗಳಾಗಿ ವಿಭಜಿಸಲು.

re ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಬಳಸುವುದು

re ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಬಳಸಲು, ಅದನ್ನು ಮೊದಲು ಇಂಪೋರ್ಟ್ ಮಾಡಿಕೊಳ್ಳಬೇಕು:

import re

ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳು

ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳು ಎರಡು ರೀತಿಯ ಕ್ಯಾರೆಕ್ಟರ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ:

  1. ಲಿಟರಲ್ ಕ್ಯಾರೆಕ್ಟರ್‌ಗಳು (Literal Characters): a, b, c, 1, 2, 3 ಮುಂತಾದ ಸಾಮಾನ್ಯ ಅಕ್ಷರಗಳು. ಇವು ತಮ್ಮಷ್ಟಕ್ಕೇ ಮ್ಯಾಚ್ ಆಗುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, cat ಎಂಬ ಪ್ಯಾಟರ್ನ್ "cat" ಎಂಬ ಸ್ಟ್ರಿಂಗ್‌ಗೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.

  2. ಮೆಟಾಕ್ಯಾರೆಕ್ಟರ್‌ಗಳು (Metacharacters): ಇವು ವಿಶೇಷ ಅರ್ಥವನ್ನು ಹೊಂದಿರುವ ಕ್ಯಾರೆಕ್ಟರ್‌ಗಳು. ಇವು ರೆಜೆಕ್ಸ್‌ನ ಶಕ್ತಿಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತವೆ. ಕೆಲವು ಪ್ರಮುಖ ಮೆಟಾಕ್ಯಾರೆಕ್ಟರ್‌ಗಳು:

    • . (ಡಾಟ್): ಯಾವುದೇ ಒಂದು ಕ್ಯಾರೆಕ್ಟರ್‌ಗೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ (ನ್ಯೂಲೈನ್ ಹೊರತುಪಡಿಸಿ).
    • ^ (ಕ್ಯಾರೆಟ್): ಸ್ಟ್ರಿಂಗ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.
    • $ (ಡಾಲರ್): ಸ್ಟ್ರಿಂಗ್‌ನ ಅಂತ್ಯಕ್ಕೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.
    • * (ಆಸ್ಟರಿಸ್ಕ್): ಹಿಂದಿನ ಕ್ಯಾರೆಕ್ಟರ್ 0 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಪುನರಾವರ್ತನೆಯಾದರೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.
    • + (ಪ್ಲಸ್): ಹಿಂದಿನ ಕ್ಯಾರೆಕ್ಟರ್ 1 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಪುನರಾವರ್ತನೆಯಾದರೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.
    • ? (ಪ್ರಶ್ನಾರ್ಥಕ ಚಿಹ್ನೆ): ಹಿಂದಿನ ಕ್ಯಾರೆಕ್ಟರ್ 0 ಅಥವಾ 1 ಬಾರಿ ಪುನರಾವರ್ತನೆಯಾದರೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.
    • [] (ಸ್ಕ್ವೇರ್ ಬ್ರಾಕೆಟ್ಸ್): ಬ್ರಾಕೆಟ್‌ನೊಳಗಿನ ಯಾವುದೇ ಒಂದು ಕ್ಯಾರೆಕ್ಟರ್‌ಗೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ.
    • | (ಪೈಪ್): OR ಆಪರೇಟರ್‌ನಂತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ (ಎಡ ಅಥವಾ ಬಲ ಬದಿಯ ಪ್ಯಾಟರ್ನ್‌ಗೆ ಮ್ಯಾಚ್ ಆಗುತ್ತದೆ).
    • () (ಪ್ಯಾರಂಥೆಸಿಸ್): ಗ್ರೂಪ್‌ಗಳನ್ನು ರಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.

ರಾ ಸ್ಟ್ರಿಂಗ್‌ಗಳು (Raw Strings)

ರೆಗ್ಯುಲರ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ಗಳಲ್ಲಿ ಬ್ಯಾಕ್‌ಸ್ಲ್ಯಾಶ್ (\) ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ (ಉದಾ: \d ಸಂಖ್ಯೆಗಳಿಗೆ). ಪೈಥಾನ್‌ನಲ್ಲಿ, ಬ್ಯಾಕ್‌ಸ್ಲ್ಯಾಶ್ ಎಸ್ಕೇಪ್ ಸೀಕ್ವೆನ್ಸ್‌ಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ (ಉದಾ: \n ನ್ಯೂಲೈನ್). ಈ ಗೊಂದಲವನ್ನು ತಪ್ಪಿಸಲು, ರೆಜೆಕ್ಸ್ ಪ್ಯಾಟರ್ನ್‌ಗಳನ್ನು ಬರೆಯುವಾಗ ರಾ ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಬಳಸುವುದು ಉತ್ತಮ ಅಭ್ಯಾಸ.

ರಾ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ರಚಿಸಲು, ಸ್ಟ್ರಿಂಗ್‌ನ ಮೊದಲು r ಅಕ್ಷರವನ್ನು ಸೇರಿಸಿ.

ಉದಾಹರಣೆ: * ಸಾಮಾನ್ಯ ಸ್ಟ್ರಿಂಗ್: "\\d" (ಒಂದು ಬ್ಯಾಕ್‌ಸ್ಲ್ಯಾಶ್ ಮತ್ತು d ಅಕ್ಷರವನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಎರಡು ಬ್ಯಾಕ್‌ಸ್ಲ್ಯಾಶ್ ಬೇಕು). * ರಾ ಸ್ಟ್ರಿಂಗ್: r"\d" (ಬ್ಯಾಕ್‌ಸ್ಲ್ಯಾಶ್ ಅನ್ನು ಸಾಮಾನ್ಯ ಕ್ಯಾರೆಕ್ಟರ್‌ನಂತೆ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ).

import re

# ರಾ ಸ್ಟ್ರಿಂಗ್ ಇಲ್ಲದೆ
pattern1 = "\\bword\\b" 

# ರಾ ಸ್ಟ್ರಿಂಗ್‌ನೊಂದಿಗೆ
pattern2 = r"\bword\b"

# ಎರಡೂ ಒಂದೇ ರೀತಿ ಕೆಲಸ ಮಾಡುತ್ತವೆ, ಆದರೆ ರಾ ಸ್ಟ್ರಿಂಗ್ ಹೆಚ್ಚು ಓದಬಲ್ಲದು.
text = "this is a word in a sentence."
print(re.search(pattern1, text))
print(re.search(pattern2, text))

ಮುಂದಿನ ಭಾಗಗಳಲ್ಲಿ, ನಾವು re ಮಾಡ್ಯೂಲ್‌ನ ಪ್ರಮುಖ ಫಂಕ್ಷನ್‌ಗಳು ಮತ್ತು ಮೆಟಾಕ್ಯಾರೆಕ್ಟರ್‌ಗಳ ಬಗ್ಗೆ ವಿವರವಾಗಿ ಕಲಿಯೋಣ.