วันอาทิตย์ที่ 17 พฤษภาคม พ.ศ. 2552

Regular Expression Syntax

ส่วนประกอบที่สำคัญในการทำ regular expression คือ ตัว patterns ที่ใช้ในการค้นหา จากคราวที่แล้ว จะพบว่า \b นั้นอยู่ในคำที่ต้องการค้นหา ได้แก่ r'\bROAD\b' ซึ่ง \b เป็น syntax ที่มีความหมายพิเศษ ซึ่งในไพธอนนั้นจะมี syntax และวิธีการใช้แต่ต่างกันไปดังนี้ ขั้นแรกก็


>>>import re


\A หมายถึงต้องเป็นต้นประโยค จากตัวอย่าง Mister จะถูกเปลี่ยนเฉพาะคำแรก

>>>my_pattern = '\AMister'
>>>raw_string = 'Mister python and Mister Thailand'
>>>re.sub(my_pattern,'MR.',raw_string)
'MR. python and Mister Thailand'


\b หมายถึงต้องเป็นขอบของคำ จากตัวอย่างเดิม คำว่า BROAD จะไม่ถูกเปลี่ยนข้างหน้า R ยังมีตัว B ทำให้ R ไม่เป็นขอบของคำ

>>>import re
>>>s = '100 NORTH BROAD ROAD'
>>>re.sub(r'\bROAD\b', 'RD.', s)
'100 NORTH BROAD RD.'


\B ตรงข้ามกับ \b คือคำนั้นต้องเป็นส่วนข้างใน

>>>my_pattern = '\BROAD'
>>>raw_string = 'BROAD ROAD'
>>>re.sub(my_pattern,'RD.',raw_string)
'BRD. ROAD'


\d หมายถึงตัวเลข


>>>my_pattern = '\d'
>>>raw_string = 'credit number 1234-1234-1234'
>>>re.sub(my_pattern,'x',raw_string)
'credit number xxxx-xxxx-xxxx'


\D ตรงข้ามกับ \d คือทุกอย่างที่ไม่ใช่ตัวเลข


>>>my_pattern = '\D'
>>>raw_string = 'credit number 1234-1234-1234'
>>>re.sub(my_pattern,'x',raw_string)
'xxxxxxxxxxxxxx1234x1234x1234'


\s หมายถึงช่องว่าง


>>>my_pattern = '\s'
>>>raw_string = 'a b c d e'
>>>re.sub(my_pattern,'_',raw_string)
'a_b_c_d_e'


\S ตรงข้ามกับ \s คือทุกอย่างที่ไม่ใช่ช่องว่าง


>>>my_pattern = '\S'
>>>raw_string = 'a b c d e'
>>>re.sub(my_pattern,'_',raw_string)
'_ _ _ _ _'


\w หมายถึงตัวอักษรและตัวเลข โดยจะไม่เอาสัญลักษณ์ต่างๆ


>>>my_pattern = '\w'
>>>raw_string = 'a!b#c%d&e.'
>>>re.sub(my_pattern,'_',raw_string)
'_!_#_%_&_.'


\W ตรงข้ามกับ \w คือพวกสัญลักษณ์ต่างๆ

>>>my_pattern = '\W'
>>>raw_string = 'a!b#c%d&e.'
>>>re.sub(my_pattern,'_',raw_string)
'a_b_c_d_e_'


\z หมายถึงต้องอยู่สุดท้ายของข้อความ


>>>my_pattern = 'Mister\Z'
>>>raw_string = 'Mister and Mister'
>>>re.sub(my_pattern,'MR.',raw_string)
'Mister and MR.'

ไม่มีความคิดเห็น:

แสดงความคิดเห็น