我有一个具有字符串值的表
data_table = {'(?P<smartcache>.+)$', 'css', '123454', '(?P<version>.+)$'}
我正在尝试查看字符串startswith
&#39;(?P&lt;&#39;和endswith
&#39;)$&#39; 。
我希望输出中的字符串类似于
output_table = '/smartcache/css/123454/version'
我面临着获取带有模式传递的值的问题
我希望从'smartcache'
获取(?P<smartcache>.+)$
。
我的尝试:
out_string_value = (string.match(uri_regex, '[^(?P<].+[)$]')
此处我的输出为smartcache>.+)$
,但我想要smartcache
。
答案 0 :(得分:2)
local uri_regex = '(?P<smartcache>.+)$'
local out_string_value = uri_regex:match('^%(%?P<([^>]+)>.*%)%$$')
print(out_string_value)
Lua模式^%(%?P<([^>]+)>.*%)%$$
与正则表达式^\(\?P<([^>]+)>.*\)\$$
类似,只是Lua模式使用%
来转义魔术字符。
答案 1 :(得分:1)
我不知道Lua Pattern语法的复杂性,但在正则表达式中,这将是模式:
^\(\?P<([^>]+)>.*\)\$$
在the regex demo上,您可以看到匹配。
^
锚点断言我们位于字符串的开头\(
匹配一个左括号\?
匹配问号P<
匹配文字字符([^>]+)
会捕获任何非>
到第1组>
匹配文字字符.*
匹配任何字符\)
匹配右括号\$
匹配一美元$
锚点断言我们位于字符串的末尾