gsub("(?<![0-9])0+", "", c("005", "0AB", "000", "0"), perl = TRUE)
#> [1] "5" "AB" "" ""
gsub("(^|[^0-9])0+", "\\1", c("005", "0AB", "000", "0"), perl = TRUE)
#> [1] "5" "AB" "" ""
นิพจน์ทั่วไปด้านบนมาจากเธรด SO นี้ซึ่งอธิบายวิธีลบศูนย์นำหน้าทั้งหมดออกจากสตริงใน R เนื่องจากการแสดงออกปกตินี้ทั้ง "000" และ "0" จะถูกเปลี่ยนเป็น "" แต่ฉันต้องการลบศูนย์นำหน้าทั้งหมดออกจากสตริงอักขระยกเว้นกรณีที่อักขระสุดท้ายปรากฏเป็นศูนย์หรืออักขระเพียงตัวเดียวคือศูนย์
"005" would become "5"
"0AB" would become "AB"
"000" would become "0"
"0" would become "0"
เธรด SO อื่น ๆ นี้อธิบายวิธีการทำสิ่งที่ฉันต้องการ แต่ฉันไม่คิดว่าฉันได้รับไวยากรณ์ค่อนข้างถูกต้องใช้วิธีแก้ปัญหาในอาร์และฉันไม่เข้าใจความแตกต่างระหว่างโซลูชันที่ 1 และ 2 ด้านล่าง ( ถ้าพวกเขาทำงานจริง ๆ )
gsub("s/^0*(\d+)$/$1/;", "", c("005", "0AB", "000", "0"), perl = TRUE) # 1st solution
# Error: '\d' is an unrecognized escape in character string starting ""s/^0*(\d"
gsub("s/0*(\d+)/$1/;", "", c("005", "0AB", "000", "0"), perl = TRUE) # 2nd solution
# Error: '\d' is an unrecognized escape in character string starting ""s/0*(\d"
regex ที่เหมาะสมใน R คืออะไรเพื่อให้ได้ในสิ่งที่ฉันต้องการ
regex
อ่อนหัด. สิ่งที่แตกต่างประสิทธิภาพ (หรือการตั้งค่าอื่น ๆ ) ระหว่างรูปแบบและหนึ่งนี้ของคุณ^0*(.+)$
หรือ^0+(.+)$
?