2012-02-04 37 views
7

Tôi có chuỗi trong sau định dạngGroovy Chuỗi thay thế

some other string @[Foo Foo](contact:2) some other string @[Bar Bar](contact:1) still some other string 

bây giờ tôi muốn chuỗi này vào

some other string <a href="someurl/2">Foo Foo</a> some other string <a href="someurl/1">Bar Bar</a> still some other string 

nên về cơ bản cần phải thay thế @[Some name](contact:id) đến URL sử dụng groovy & sử dụng reg cũ gì là cách hiệu quả để làm điều đó

Trả lời

10

Bạn có thể sử dụng Groovy replaceAll Chuỗi phương pháp với một biểu thức chính quy nhóm:

"some other string @[Foo Foo](contact:2) some other string @[Bar Bar](contact:1) still some other string" 
.replaceAll(/@\[([^]]*)]\(contact:(\d+)\)/){ all, text, contact -> 
    "<a href=\"someurl/${contact}\">${text}</a>" 
} 

/@\[([^]]*)]\(contact:(\d+)\)/ = ~ @[Foo Foo](contact:2)
/ bắt đầu một mô hình biểu hiện thường xuyên
@ trận @
\[ phù hợp [
( bắt đầu các văn bản nhóm
[^]]* trận Foo Foo
) kết thúc văn bản nhóm
] trận ]
\(contact: trận (contact:
( bắt đầu những xúc nhóm
\d+ trận 2
) kết thúc xúc nhóm
\) trận )
/ kết thúc mô hình biểu hiện thường xuyên

+0

bạn có thể giải thích điều này – user602865

+0

Bạn có thể vui lòng giúp tôi tại http://stackoverflow.com/questions/9144597/regular-expression-and-string-operations – user602865

2

Bạn không đề cập đến ngôn ngữ lập trình, nhưng về mặt tổng quát giả sử ngôn ngữ thực hiện cú pháp s /// gõ regexp someh ow:

s/@\[([^\]]+)\]\([^:]+:([0-9]+)\)/<a href="someurl\/$2">$1<\/a>/g 

Điều đó sẽ hoạt động ở hầu hết các ngôn ngữ regexp. Ví dụ, nó hoạt động trong perl (mặc dù tôi đang thoát khỏi @ ký tự đặc biệt có nghĩa là một cái gì đó trong perl:

#echo "some other string @[Foo Foo](contact:2) some other string @[Bar Bar](contact:1) still some other string" | perl -p -e 's/\@\[([^\]]+)\]\([^:]+:([0-9]+)\)/<a href="someurl\/$2">$1<\/a>/g' 
some other string <a href="someurl/2">Foo Foo</a> some other string <a href="someurl/1">Bar Bar</a> still some other string 
+0

ngôn ngữ là groovy – user602865

+0

Ahh ... doh! Làm cách nào tôi bỏ lỡ điều đó ... –

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