我有一个很长的字符串,在这个字符串的某处,有一个url。在此示例中,此URL位于开头。
"http://localhost:1234/api/$metadata#this_entry_is_variable_and_can_exist_of_numbers_and_characters/$entity","Version":"AAAEEEIIU=""
我试图在C#中为此特定字符串编写RegEx,以便在遵循以下规则后提取网址:
/api
,但它可以是任何字符/api
中,始终为/$metadata
/$metadata
之后有一个标签#
后跟一串任意字符/$entity
这是我迄今为止提出的RegEx:
(^http://\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\^$metadata$(\#(\[a-zA-Z0-9)(\$(\entity$))]*).*?)
在LinqPad中测试时,会出现以下问题:
任何人都可以给我一些提示继续,因为我被困了......
答案 0 :(得分:3)
答案 1 :(得分:2)
试试这个正则表达式:
https?://[\w-]+(?:\.[\w-]+)*(?::\d+)?/.*?\$metadata#.*?\$entity\b
给你提问:
由于^
,您只匹配了一个正则表达式。如果未设置RegexOptions.Multiline
,则仅匹配输入字符串的开头,如果设置了RegexOptions.Multiline
,则仅匹配每个新行的开头(在换行符之后)。
正则表达式在$metadata...entity$
包围[]
见2.
只需使用s
?
醇>