ลบตัวเลขที่อยู่ตรงกลางของสตริง


4

ฉันต้องการลบทศนิยมส่วนเกินออกจากสตริงโดยใช้ find / replace ด้วย regex

ตัวอย่างเช่น :

<xml_taga>145.3345542123</xml_taga>
<xml_tagb>125.1245471</xml_tagb>
<xml_tagc>42.12</xml_tagc>

ควรมีลักษณะเช่นนี้:

<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>

สิ่งที่ไกลที่สุดที่ฉันได้รับคือการแสดงออกนี้

(\.\d{3,12})

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.

คำตอบ:


2
  • Ctrl + H
  • หาอะไร: (?<=\d\.\d\d)\d+ หรือ \d\.\d\d\K\d+
  • แทนที่ด้วย: LEAVE EMPTY
  • แทนที่ทั้งหมด

คำอธิบาย:

(?<=        : start lookbehind, make sure we have 
  \d\.\d\d  : a digit, a dot and 2 digits
)           : end lookbehind
\d+         : 1 or more digits

ทางเลือกอื่น ๆ :

\d\.\d\d    : a digit, a dot and 2 digits
\K          : forget what we have seen until this point
\d+         : 1 or more digits
  • ตรวจสอบการแสดงออกปกติ

ตัวอย่างผลลัพธ์ที่ได้รับ:

<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>

2

ฉันต้องการลบทศนิยมส่วนเกินออกจากสตริงโดยใช้ find / replace ด้วย regex

  • เมนู "ค้นหา" & gt; "แทนที่" (หรือ Ctrl + H )

  • ตั้งค่า "ค้นหาสิ่งที่" เป็น (\d+\.\d\d).*<.

  • ตั้งค่า "แทนที่ด้วย" เป็น \1<

  • เปิดใช้งาน "นิพจน์ทั่วไป" และ "จับคู่บรรทัดใหม่"

  • คลิก "แทนที่ทั้งหมด"

    Image

ก่อน:

<xml_taga>145.3345542123</xml_taga>
<xml_tagb>125.1245471</xml_tagb>
<xml_tagc>42.12</xml_tagc>

หลังจาก:

<xml_taga>145.33</xml_taga>
<xml_tagb>125.12</xml_tagb>
<xml_tagc>42.12</xml_tagc>

อ่านเพิ่มเติม


.* เป็นโลภและอาจทำให้เกิดปัญหาเมื่อแท็กสองรายการในบรรทัด
Toto

1
การแก้ไขของฉันถูกปฏิเสธฉันไม่รู้ว่าทำไมคุณได้พิมพ์ต้นฉบับในส่วน "after" แทนที่จะเป็นผลลัพธ์
Toto
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.