首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在lua (raw)中定义自动转义的字符串?

有没有办法在lua (raw)中定义自动转义的字符串?
EN

Stack Overflow用户
提问于 2011-10-30 20:43:15
回答 1查看 1.6K关注 0票数 3

下面几行是我需要在lua中使用的任意regexp。

代码语言:javascript
复制
['\";=]
!^(?:(?:[a-z]{3,10}\s+(?:\w{3,7}?://[\w\-\./]*(?::\d+)?)?/[^?#]*(?:\?[^#\s]*)?(?:#[\S]*)?|connect (?:\d{1,3}\.){3}\d{1,3}\.?(?::\d+)?|options \*)\s+[\w\./]+|get /[^?#]*(?:\?[^#\s]*)?(?:#[\S]*)?)$
'(?i:(?:c(?:o(?:n(?:t(?:entsmartz|actbot/)|cealed defense|veracrawler)|mpatible(?: ;(?: msie|\.)|-)|py(?:rightcheck|guard)|re-project/1.0)|h(?:ina(?: local browse 2\.|claw)|e(?:rrypicker|esebot))|rescent internet toolpak)|w(?:e(?:b(?: (?:downloader|by mail)|(?:(?:altb|ro)o|bandi)t|emailextract?|vulnscan|mole)|lls search ii|p Search 00)|i(?:ndows(?:-update-agent| xp 5)|se(?:nut)?bot)|ordpress(?: hash grabber|\/4\.01)|3mir)|m(?:o(?:r(?:feus fucking scanner|zilla)|zilla\/3\.mozilla\/2\.01$|siac 1.)|i(?:crosoft (?:internet explorer\/5\.0$|url control)|ssigua)|ailto:craftbot\@yahoo\.com|urzillo compatible)|p(?:ro(?:gram shareware 1\.0\.|duction bot|webwalker)|a(?:nscient\.com|ckrat)|oe-component-client|s(?:ycheclone|urf)|leasecrawl\/1\.|cbrowser|e 1\.4|mafind)|e(?:mail(?:(?:collec|harves|magne)t|(?: extracto|reape)r|(siphon|spider)|siphon|wolf)|(?:collecto|irgrabbe)r|ducate search vxb|xtractorpro|o browse)|t(?:(?: ?h ?a ?t ?' ?s g ?o ?t ?t ?a ? h ?u ?r ?|his is an exploi|akeou)t|oata dragostea mea pentru diavola|ele(?:port pro|soft)|uring machine)|a(?:t(?:(?:omic_email_hunt|spid)er|tache|hens)|d(?:vanced email extractor|sarobot)|gdm79\@mail\.ru|miga-aweb\/3\.4|utoemailspider| href=)|^(?:(google|i?explorer?\.exe|(ms)?ie( [0-9.]+)?\ ?(compatible( browser)?)?)$|www\.weblogs\.com|(?:jakart|vi)a|microsoft url|user-Agent)|s(?:e(?:archbot admin@google.com|curity scan)|(?:tress tes|urveybo)t|\.t\.a\.l\.k\.e\.r\.|afexplorer tl|itesnagger|hai)|n(?:o(?:kia-waptoolkit.* googlebot.*googlebot| browser)|e(?:(?:wt activeX; win3|uralbot\/0\.)2|ssus)|ameofagent|ikto)|f(?:a(?:(?:ntombrows|stlwspid)er|xobot)|(?:ranklin locato|iddle)r|ull web bot|loodgate|oobar/)|i(?:n(?:ternet(?: (?:exploiter sux|ninja)|-exprorer)|dy library)|sc systems irc search 2\.1)|g(?:ameBoy, powered by nintendo|rub(?: crawler|-client)|ecko\/25)|(myie2|libwen-us|murzillo compatible|webaltbot|wisenutbot)|b(?:wh3_user_agent|utch__2\.1\.1|lack hole|ackdoor)|d(?:ig(?:imarc webreader|out4uagent)|ts agent)|(?:(script|sql) inject|$botname/$botvers)ion|(msie .+; .*windows xp|compatible \; msie)|h(?:l_ftien_spider|hjhj@yahoo|anzoweb)|(?:8484 boston projec|xmlrpc exploi)t|u(?:nder the rainbow 2\.|ser-agent:)|(sogou develop spider|sohu agent)|(?:(?:d|e)browse|demo bot)|zeus(?: .*webster pro)?|[a-z]surf[0-9][0-9]|v(?:adixbot|oideye)|larbin@unspecified|\bdatacha0s\b|kenjin spider|; widows|rsync|\\\r))'

此外,还有很多其他地方……正如你可能注意到的,第一种情况只有"\"机器人转义,而不是'

代码语言:javascript
复制
rex_pcre.new('['\";=]')

行不通的。

代码语言:javascript
复制
rex_pcre.new("['\";=]")

但是,正则表达式中的部分应该可以工作,比如\-

我也不能使用

代码语言:javascript
复制
[[ ]]

因为有以]结束的regexp (第一个示例),如下图所示

代码语言:javascript
复制
rex_pcre.new( [[
['\";=]
]])

在像第三个以)结尾并引发意外符号错误的情况下,我不会工作。

总而言之,我正在寻找Python的r"UNESCAPED STRING"或C#的@"UNESCAPED STRING"

我假设没有这样的东西,但我想知道获得类似功能的方法是什么,鉴于这样的事实,我只使用这些值(正则表达式),并且无法控制最初如何组合它们。

这是我目前的解决方案,我只是尝试用[[ ]]编译这行代码,如果失败,则移到",然后移到"'"/

代码语言:javascript
复制
EscapeRegEx = function (xp)
    -- try with [[ ]]
    local opening = '[['
    local closing = ']]'
    local codeline = "rex_pcre.new(" .. opening .. xp .. closing .. ")"
    _, err = loadstring(codeline)
    if not err then return codeline end

    -- then try with "
    opening = '"'
    closing = '"'
    codeline = "rex_pcre.new(" .. opening .. xp .. closing .. ")"
    _, err = loadstring(codeline)
    if not err then return codeline end

    -- then try with '
    opening = "'"
    closing = "'"
    codeline = "rex_pcre.new(" .. opening .. xp .. closing .. ")"
    _, err = loadstring(codeline)
    if not err then return codeline end

end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-30 21:14:41

您可以使用较长版本的长方括号:

代码语言:javascript
复制
[=========[the regex goes in here]=========]

左长括号只与相同长度的右长括号匹配。

有关更多详细信息,请参阅this;您还可以执行类似的操作来获得嵌套的多行注释。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7944961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档