Tìm kiếm một biểu thức chính quy để làm việc trên một danh sách các giá trị được phân tách bằng dấu phẩy


7

Tôi có 3 dòng dài cách nhau bằng dấu phẩy. Điều tôi muốn làm là xóa số ở giữa và chỉ để lại số đầu tiên và số cuối cách nhau bằng dấu phẩy.

Hiện tại:

123456789123,723456789123456,834567885544334
123456789125,723456789123457,834567885544333
123456789126,723456789123458,834567885544337

Kết quả như ý:

123456789123,834567885544334
123456789125,834567885544333
123456789126,834567885544337

Tôi đã thử làm điều này, nhưng nó không hoạt động với các biểu thức thông thường này:

  • biểu thức chính quy để tìm chuỗi: %[0-9]+,[0-9]+,[0-9]+
  • biểu thức chính quy để thay thế chuỗi: ^1,^2

Những biểu hiện thường xuyên thực sự làm những gì tôi muốn đạt được?

Lưu ý - Tôi hiện đang sử dụng một ứng dụng có tên Ultraedit chạy trên Windows 7, nếu bạn đề xuất một ứng dụng chỉnh sửa văn bản tốt hơn cho Windows có thể giải quyết vấn đề của tôi, vui lòng cho tôi biết.


Tôi đã chỉnh sửa câu hỏi của bạn, nếu bạn không hài lòng với những thay đổi, vui lòng hoàn nguyên hoặc chỉnh sửa lại.
Baarn

Câu trả lời:


10

Bạn chỉ có thể thay thế số giữa của mỗi dòng không có gì.

Trong trình chỉnh sửa

Đó là, trong trình chỉnh sửa của bạn, tìm kiếm và thay thế regex

,[0-9]+,

(chỉ khớp các số với dấu phẩy ở cả hai bên, mà đối với đầu vào của bạn chỉ là số ở giữa) với một dấu phẩy duy nhất:

,

Tôi giả sử Ultraedit hỗ trợ tìm kiếm và thay thế regex. Nếu không, hãy thử Notepad ++, cái mà tôi biết.

Từ dòng lệnh

Vì bạn đã gắn thẻ câu hỏi của mình , đây là cách thực hiện từ dòng lệnh.

quyến rũ

Sử dụng sed, một lệnh Linux tiêu chuẩn cũng có sẵn cho Windows như một phần của Cygwin hoặc GnuWin32:

C:\>sed -e 's/,[0-9]+,/,/g' filename.txt

Quyền hạn

Jens chỉ ra rằng bạn cũng có thể làm điều đó trong Windows Powershell; thấy lời giải thích này .


1
Nó sẽ không hoạt động nếu bạn thay thế biểu thức phụ ở giữa bằng một chuỗi rỗng. Tuy nhiên, bạn có thể thay thế nó bằng một dấu phẩy duy nhất để có được hiệu quả mong muốn.
Adeel Zafar Soomro

Rất tiếc, đó là ngu ngốc của tôi. Đã sửa.
Ốc cơ khí

3
Nếu không có Cygwin, bạn có thể sử dụng PowerShell: blogs.technet.com/b/heyscriptingguy/archive/2008/01/17/...
Jens

3

Cú pháp Regex thay đổi từ ứng dụng này sang ứng dụng khác. Tôi không quen thuộc với Ultredit và sẽ cung cấp một anser thế hệ

Regex của bạn thiếu dấu ngoặc đơn

([0-9] +), [0-9] +, ([0-9] +)


2

Để thay thế văn bản, người ta cần gắn thẻ biểu thức con phù hợp bằng cách sử dụng dấu ngoặc đơn.

Trong UltraEdit, bạn phải tìm kiếm biểu thức chính quy sau:

 %^([0-9]+^),[0-9]+,^([0-9]+^)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.