Dấu hoa thị (*) và dấu cộng (+) không hoạt động trong Notepad ++ như một biểu thức thông thường


3

Tôi đang sử dụng Notepad ++ và học các biểu thức chính quy, nhưng tôi tự hỏi tại sao một số ký tự meta không hoạt động trong trình chỉnh sửa, đó là dấu hoa thị (*) và dấu cộng (+).

Ví dụ:

Cây trông tuyệt vời với lá và hoa.

Biểu thức chính quy: [tre *]

Biểu thức chính quy ở trên không hoạt động trong Notepad ++ như mong đợi.


Là biểu hiện thường xuyên của bạn [tre*]hay tre*?
James P

Biểu hiện thường xuyên của tôi là [tre *]
rogue lad

Câu trả lời:


11

Mục đích của tôi là để phù hợp trevà các nhân vật trước của nó .

Trong ví dụ của bạn The tree is looking awesome with leaves and flowers., đoạn từ trekhông được đặt trước bởi bất kỳ ký tự nào trong cùng một từ, nó được đặt trước bởi các ký tự là một phần của các từ trước đó. Điều này làm cho câu hỏi của bạn có vẻ hơi mơ hồ.

Để khớp với bất kỳ ký tự nào theo sau "t" rồi "r" rồi "e", tôi sẽ sử dụng .*tre.

Để khớp với "t" rồi "r" rồi "e" theo sau bởi bất kỳ ký tự nào, tôi sẽ sử dụng tre.*.

Để ghép một từ bắt đầu bằng "t" rồi "r" rồi "e", tôi sẽ sử dụngtre\w*

Biểu hiện thường xuyên của tôi là [tre *]

Khớp với một ký tự, ký tự trùng khớp có thể là một trong bốn ký tự được chỉ định. Bên trong []metacharacter *chỉ được đối xử như một nhân vật bình thường (bởi vì đó là cách hữu ích nhất để nó được xử lý trong bối cảnh đó).

Dấu ngoặc []là để chỉ định một ký tự được tìm thấy trong văn bản có thể có một số khả năng. Ví dụ: nếu bạn muốn ghép một trong hai từ Treehoặc treebạn có thể sử dụng [Tt]reenghĩa là khớp với một ký tự Thoặc ttheo sau bởi một ký tự thứ hai được rtheo sau bởi một ký tự thứ ba được etheo sau bởi một ký tự thứ tư e.

Bạn có thể khớp Treetreesử dụng .reenhưng .khớp với bất kỳ ký tự đơn nào để RE cũng khớp freevà các từ khác bạn có thể không muốn. []cung cấp một phương tiện để bạn cụ thể hơn là .chỉ định các giá trị của một ký tự trong văn bản mà bạn muốn khớp


Có Đây chính xác là những gì tôi đã cố gắng giải quyết. Nhưng vui lòng giải thích thêm một điều nữa về notepad ++ rằng, tôi đã tìm kiếm từ có dấu ngoặc vuông như [tre *] và trình soạn thảo khớp từng ký tự trong khi tôi muốn trình soạn thảo khớp với một từ hoàn chỉnh và tre \ w * đã giải quyết vấn đề của tôi .
kẻ lừa đảo

1
@Rajper, xem câu trả lời cập nhật. Để biết thêm thông tin, tôi đề nghị sử dụng một công cụ tìm kiếm để tìm regular expression tutorial.
RedGrittyBrick 17/03/2015

@rajper, để biết thêm thông tin về regex, tôi khuyên bạn nên tham khảo nhanh regex của MSDN . Về cơ bản, bất cứ điều gì ở giữa dấu ngoặc vuông ( []) có nghĩa là: " tìm bất kỳ ký tự nào trong các dấu ngoặc đó, tôi không quan tâm cái nào ". -Ví dụ [A-Z], ngoại lệ duy nhất là khi bạn có dấu gạch nối ( ), có nghĩa là: " tìm bất kỳ ký tự nào ở giữa A và Z ", trong ví dụ cụ thể của tôi, nó chỉ đơn giản có nghĩa là " tìm bất kỳ ký tự nào của bảng chữ cái Latinh ".
Nolonar 17/03/2015

@RedGrittyBrick bạn có thể chỉnh sửa câu hỏi để nó không còn mơ hồ nữa không?
Braiam 17/03/2015

2

*+không phải là ký tự meta khi ở trong một lớp nhân vật. Điều này đúng với regex nói chung, không chỉ với Notepad ++. [a*+]có nghĩa là "khớp đơn a, *hoặc +" .

Nếu bạn muốn khớp bất kỳ số lượng ký tự t, rhoặc e, sử dụng [tre]*. Nó sẽ phù hợp với bất kỳ trong số này:

tttrreerer
rrrrrr
er
t
(empty line)

Nếu bạn muốn khớp một t, một rhoặc bất kỳ số es nào, hãy sử dụng ([tr]|e*)hoặc (t|r|e*). Regex này khớp với các dòng sau:

t
r
eeeeeeeee
(empty line)

Và sẽ không phù hợp, ví dụ. tre.

Đây là một hướng dẫn regex tốt .


Vâng, mục đích của tôi là để phù hợp với tre và các nhân vật trước đó của nó. Như bạn đã nói trong câu trả lời; Nó có thể đúng nhưng về mặt notepad ++ thì nó không hoạt động ngay cả [tre] * mà bạn đã đề cập.
kẻ lừa đảo

@Rajper Bạn có thể đăng một vài ví dụ về chuỗi bạn muốn khớp không?
gronostaj 17/03/2015

Chuỗi-1: Đồ nội thất của văn phòng đã cũ. Tôi muốn tìm kiếm "văn phòng" theo nghĩa đen vì tôi viết một biểu thức chính là [văn bản] * vì dấu hoa thị sẽ thêm bất kỳ ký tự nào và văn phòng sẽ được tìm thấy nhưng điều này không hoạt động.
kẻ lừa đảo

1
@Rajper [offic]*sẽ phù hợp với bất kỳ chuỗi zero hoặc nhiều ký tự o, f, i, c. Ví dụ ofichoặc fciohoặc foiicffocicooeochuỗi rỗng. Xin vui lòng đọc hướng dẫn tôi đã liên kết.
gronostaj 17/03/2015
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.