2009-03-27 25 views
6

Điều này question khiến tôi suy nghĩ trong một số regex để đối sánh javadoc nhận xét bao gồm một số văn bản được chỉ định.Regex để khớp các đoạn javadoc

Ví dụ, tìm kiếm tất cả javadoc mảnh vỡ bao gồm @deprecated:

/** 
* Method1 
* ..... 
* @deprecated 
* @return 
*/ 

tôi quản lý để có được sự biểu hiện /\*\*.*[email protected]*?\*/ nhưng điều này không thành công trong một số trường hợp như:

/** 
* Method1 
* ..... 
* @return 
*/ 
public int Method1() { } 

// this method should be @deprecated 
public void Method2() { }  

/** 
* Method3 
* ..... 
* @return 
*/ 
public int Method3() { } 

nơi nó phù hợp tất cả mã từ đoạn mã javadoc thứ nhất cho đến lần thứ 3 javadoc fragme nt.

Ai đó có thể cung cấp số regex cho việc này không?

Trả lời

9

Hãy thử điều này một:

/\*\*([^\*]|\*(?!/))*[email protected]*?\*/ 
+0

Điều này dường như thực hiện công việc. Cảm ơn. –

+0

Tôi sẽ sử dụng (?! /) Thay vì [^ /]. Nếu không, nó sẽ không khớp nếu dấu cách trước dấu "@" bị thiếu, tức là "* @ không dùng nữa". –

+0

Điểm rất tốt :) – Diadistis

0

method2() không có nhận xét javadoc và không được chấp nhận (mặc dù nhận xét phải là).

Ngoài ra, nếu bạn muốn trích xuất thông tin từ nhận xét javadoc, tôi khuyên bạn nên xem công cụ javadoc và viết Doclet. Bạn có thể truy cập dễ dàng tất cả thông tin từ nhận xét javadoc từ đó.

+0

Bombe, tôi chỉ chọn chuỗi "@deprecated" như tôi có thể lựa chọn "bla". Đó không phải là vấn đề. Ngoài ra, tôi không thể sử dụng một công cụ bên ngoài bởi vì biểu thức này là để kết hợp trong hộp thoại tìm kiếm nhật thực. Xem câu hỏi liên quan. –

Các vấn đề liên quan