เครื่องมือข้อความและชีวิตประจำวัน · ชุดเครื่องมือข้อความ
กลุ่มการบันทึก Regex ในการค้นหาและแทนที่: จัดลำดับวันที่ใหม่ด้วย $1, $2, $3
· มันทำงานอย่างไร
นิพจน์ทั่วไป ค้นหาและแทนที่ วันที่
แสดงให้เห็นว่าวงเล็บจับภาพบางส่วนของการแข่งขันอย่างไร และวิธีที่ $1, $2 และ $3 นำมาใช้ใหม่ในการแทนที่ โดยใช้การเขียนซ้ำ ISO-to-day-month-year แบบคลาสสิก และการเรียงลำดับใหม่อีกสองสามรายการ
สี่ร้อยวันที่ผิดลำดับ — เหตุใดการแก้ไข 2024-01-02 ด้วยมือลงใน 02/01/2024 จึงเป็นงานสำหรับจับภาพกลุ่ม
การส่งออกสเปรดชีตสามารถปล่อยวันที่สี่ร้อยวันที่ไว้ใน ISO ตามลำดับปี-เดือน-วัน เมื่อแผ่นงานในสหราชอาณาจักรคาดว่าจะมีวัน/month/year. การแก้ไข `2024-01-02` ลงใน `02/01/2024` ด้วยมือนั้นทำได้ช้า แต่ความเสี่ยงที่มากกว่านั้นคือความไม่สอดคล้องกัน: แถวที่ข้ามหรือตัวเลขที่ย้ายหนึ่งหลักสามารถคงอยู่ได้จนกว่าจะเผยแพร่รายงาน
การค้นหาและแทนที่สามารถถือว่าทุกวันเป็นการจัดเรียงส่วนต่างๆ เดียวกัน แทนที่จะเป็นสตริงที่ไม่เกี่ยวข้องสี่ร้อยสตริง นิพจน์ทั่วไปจะระบุปี เดือน และวัน ในขณะที่นิพจน์แทนที่จะเขียนส่วนที่ถูกจับเหล่านั้นกลับไปในลำดับอื่น ตัวเลขเดิมจะถูกนำมาใช้ซ้ำ ดังนั้นการดำเนินการจึงเปลี่ยนโครงสร้างแทนที่จะพิมพ์ค่าใหม่
วงเล็บอะไรจับภาพ — แต่ละกลุ่มได้รับตัวเลขจากซ้ายไปขวาอย่างไร และ \d{4} และ \d{2} ตรงกันอย่างไร
วงเล็บสร้างกลุ่มการจับ ใน `(\d{4})-(\d{2})-(\d{2})` กลุ่มแรกจับตัวเลขสี่หลัก กลุ่มที่สองจับสองหลัก และกลุ่มที่สามจับสองหลัก `\d` หมายถึงตัวเลขในรูปแบบ JavaScript นี้ ในขณะที่ `{4}` และ `{2}` ระบุจำนวนการทำซ้ำที่แน่นอนซึ่งจำเป็นในแต่ละกลุ่ม
กลุ่มจะได้รับตัวเลขจากวงเล็บเปิดแต่ละวงเล็บเมื่อกลไกอ่านจากซ้ายไปขวา สำหรับ `2024-01-02` กลุ่ม 1 คือ `2024` กลุ่ม 2 คือ `01` และกลุ่ม 3 คือ `02`; ยัติภังค์จับคู่ตัวคั่นแต่จะอยู่นอกวงเล็บ ดังนั้นจึงไม่คงไว้เป็นค่าที่บันทึกไว้
ใช้ $1, $2 และ $3 ในการแทนที่ — สร้างการจับคู่ใหม่ตามลำดับใหม่ด้วยตัวคั่นใหม่
การแทนที่ `$3/$2/$1` ขอให้ JavaScript แทรกการจับภาพครั้งที่สาม เครื่องหมายทับ การบันทึกครั้งที่สอง เครื่องหมายทับอีกครั้ง และการจับภาพครั้งแรก นำไปใช้กับตัวอย่าง การอ้างอิงเหล่านั้นจะสร้าง `02/01/2024` การอ้างอิงดอลลาร์เป็นคำแนะนำในการแทนที่ ไม่ใช่ข้อความที่ต้องปรากฏในวันที่ที่ตรงกันด้วย
ToolAcre ส่งผ่านสตริงการแทนที่ไปยังการดำเนินการแทนที่สตริง JavaScript มาตรฐาน แหล่งที่มารองรับการอ้างอิงที่เป็นตัวเลขอย่างชัดเจน เช่น `$1`, `$2` และ `$3` และรูปแบบการค้นหาจะถูกรวบรวมทั่วโลก การตั้งค่าสถานะสากลนั้นเป็นสาเหตุว่าทำไมวันที่ตรงกันทั้งหมดจึงถูกเขียนใหม่ในการดำเนินการเดียว แทนที่จะเป็นเพียงการจับคู่แรกเท่านั้น
ตัวอย่างการทำงาน — (\d{4})-(\d{2})-(\d{2}) แทนที่ด้วย $3/$2/$1, จากนั้นตรวจสอบจำนวนการแทนที่กับจำนวนแถว
วางคอลัมน์ที่ส่งออก เปิด Regex ป้อน `(\d{4})-(\d{2})-(\d{2})` ในการค้นหา และป้อน `$3/$2/$1` ในแทนที่ การเลือกแทนที่ทั้งหมดก่อนจะนับรายการที่ตรงกัน จากนั้นจึงเขียนใหม่ ดังนั้นผลลัพธ์จะรายงานจำนวนสตริงรูปวันที่ที่เปลี่ยนแปลงในข้อความที่วางทั้งหมด
เปรียบเทียบตัวเลขนั้นกับจำนวนแถวที่คาดไว้ก่อนที่จะคัดลอกผลลัพธ์กลับไปยังสเปรดชีต การนับที่ต่ำกว่าจะชี้ไปที่ช่องว่างหรือวันที่ในรูปแบบอื่น จำนวนที่สูงกว่าหมายถึงข้อความที่คล้ายกันในที่อื่นก็ตรงกันด้วย เครื่องมือนี้ไม่มีการแสดงตัวอย่างแทนที่หนึ่ง ดังนั้นให้ใช้การดำเนินการเลิกทำหากการนับหรือเอาต์พุตแสดงรูปแบบที่กว้างเกินไป
การเรียงลำดับใหม่เพิ่มเติม — 'นามสกุล, ชื่อหน้า' เป็น 'ชื่อหน้านามสกุล' และสลับคอลัมน์ของรายการสองคอลัมน์
หลักการเดียวกันนี้สามารถเปลี่ยน `Surname, Forename` เป็น `Forename Surname` ได้ เมื่อแต่ละบรรทัดมีหนึ่งลูกน้ำอย่างน่าเชื่อถือ: ค้นหา `([^,]+), ([^\r\n]+)` และแทนที่ด้วย `$2 $1` ในที่นี้แต่ละกลุ่มจะจับข้อความที่ด้านหนึ่งของตัวคั่นที่รู้จัก แทนที่จะถือว่ามีจำนวนหลักคงที่
การสลับสองคอลัมน์ไม่ใช่การดำเนินการตารางในตัว แม้ว่าจะมีการใช้ถ้อยคำโครงร่างกว้างๆ ก็ตาม ใช้งานได้เฉพาะเมื่อข้อความที่วางมีตัวคั่นที่เชื่อถือได้และรูปแบบอธิบายขอบเขตบรรทัดได้อย่างปลอดภัย เครื่องหมายจุลภาคในชื่อ ช่องที่ขาดหายไป หรือแท็บที่ไม่สอดคล้องกัน จำเป็นต้องมีการล้างข้อมูลหรือมีรูปแบบที่แม่นยำกว่านี้ก่อนที่การแทนที่จำนวนมากจะเชื่อถือได้
การเรียงลำดับใหม่เพิ่มเติมจะทำงานเฉพาะเมื่ออินพุตมีตัวคั่นที่เชื่อถือได้
จุดในรูปแบบหมายถึงอักขระเกือบทุกตัว ดังนั้นรูปแบบวันที่ที่เขียนเป็น `(\d{4}).(\d{2}).(\d{2})` ยังยอมรับเครื่องหมายทับ ช่องว่าง หรือตัวอักษรระหว่างฟิลด์ด้วย หลีกจุดตามตัวอักษรเป็น `\.` และหลีกอักขระเมตาอื่นๆ เมื่อควรจับคู่กัน มีการรายงานวงเล็บที่ไม่ถูกต้องหรือวงเล็บที่ยังไม่เสร็จโดยไม่ต้องเปลี่ยนข้อความ
การกำหนดหมายเลขกลุ่มเริ่มต้นที่ 1 ไม่ใช่ 0 เครื่องหมายดอลลาร์ยังมีความหมายการแทนที่พิเศษอีกด้วย: `$&` แทรกการจับคู่ทั้งหมด และ `$$` จะสร้างเครื่องหมายดอลลาร์ตามตัวอักษรหนึ่งตัว ลักษณะการทำงานนี้มีผลแม้ในขณะที่โหมด regex ปิดอยู่เนื่องจาก ToolAcre หนีเฉพาะด้านการค้นหา จะไม่หนีจากสตริงการแทนที่ก่อนที่ JavaScript จะประมวลผล
สิ่งนี้ไม่ครอบคลุมถึงกลุ่มที่มีชื่อ ชื่อที่มองข้างหลัง และชื่อเดือนที่จำเป็นต้องมีตารางการค้นหา
กลุ่มที่เป็นตัวเลขสามารถจัดเรียงข้อความที่มีอยู่แล้วในการแข่งขันใหม่ได้ แต่ไม่สามารถแปล `Jan` เป็น `01` ได้ เนื่องจากต้องมีการค้นหาแทนที่จะเรียงลำดับใหม่ บทความนี้ยังไม่ขึ้นอยู่กับกลุ่มที่มีชื่อหรือ lookbehind ซึ่งประโยชน์และการสนับสนุนเบราว์เซอร์เกี่ยวข้องกับชุดตัวเลือกที่แตกต่างจากการล้างข้อมูลการส่งออกแบบธรรมดานี้
นิพจน์วันที่จะตรวจสอบรูปร่าง ไม่ใช่ความจริงของปฏิทิน มันจะจับคู่ `2024-99-88` เนื่องจากตัวเลขสองหลักเป็นไปตามแต่ละกลุ่มที่เล็กกว่า ตรวจสอบวันที่ในสเปรดชีตหรือระบบต้นทางเมื่อความถูกต้องมีความสำคัญ การค้นหาและแทนที่มีความเหมาะสมสำหรับการจัดรูปแบบที่สอดคล้องกัน ไม่ใช่เพื่อพิสูจน์ว่าเดือนและวันที่บันทึกแต่ละเดือนนั้นถูกต้อง
การนำออก — หนึ่งรูปแบบ การเปลี่ยนหนึ่งครั้ง ทุกแถวจะคงที่ในชุดเครื่องมือข้อความพร้อมๆ กัน โดยจะเลิกทำหากผลลัพธ์ไม่เป็นไปตามที่คุณคาดหวัง
กลุ่มแคปเจอร์เปลี่ยนสตริงที่ตรงกันหนึ่งสตริงให้เป็นชิ้นส่วนที่นำมาใช้ซ้ำได้ สำหรับคอลัมน์วันที่ที่เหมือนกัน สามกลุ่มจะเก็บปี เดือน และวันเดิมไว้ ในขณะที่ `$3/$2/$1` จัดเรียงตามลำดับสหราชอาณาจักร การค้นหาทั่วโลกจะจัดการรายการที่ตรงกันทั้งหมด และจำนวนที่รายงานจะตรวจสอบจำนวนแถวที่คุณต้องการเปลี่ยนแปลงทันที
ทำให้ขั้นตอนการทำงานสามารถตรวจสอบได้: เก็บสำเนาของการส่งออก ใช้รูปแบบที่แคบที่สุดที่เหมาะกับมัน เปรียบเทียบการนับ ตรวจสอบผลลัพธ์หลายๆ รายการ และเลิกทำเมื่อหลักฐานไม่ตรงกับความคาดหวังของคุณ การแทนที่ที่มีขอบเขตดีหนึ่งครั้งสามารถลบการแก้ไขซ้ำๆ ได้โดยไม่ต้องแสร้งทำเป็นว่าค่าที่มีรูปทรงตัวเลขทุกค่าจะเป็นวันที่ที่ถูกต้องโดยอัตโนมัติ