问题标签 [lua-patterns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lua - lua:模式匹配和提取电话号码
我无法在 Lua 中制作具有以下要求的函数:
- 将字符串
phone_number
和 2 位数字country_code
作为输入。 phone_number
形式为 {1 || ""}{country_code
}{10 位或 11 位手机号码}
我需要输出 10 位或 11 位的手机号码。
示例 I/O:
phone_number
=“552234332344”,country_code
=“55”=>“2234332344”
phone_number
=“15522343323443”,country_code
=“55”=>“22343323443”
谢谢!
lua - 使用 LPeg 使 Lua 模式不区分大小写
我有一个应用程序(除其他外)支持纯文本搜索和使用 Lua 模式的搜索。为方便起见,该应用程序支持不区分大小写的搜索。这是一个图像片段:
将给定 Lua 模式转换为不区分大小写的 Lua 模式的代码不太漂亮。它基本上担心一个字符前面是否有奇数或偶数个转义符 (%) 以及它是否位于方括号内。图像中显示的图案变为%a[bB][bB]%%[cC][%abB%%cC]
我还没有机会学习 LPeg,我想这可能是我的动力。
我的问题是这是否是 LPeg 可以轻松处理的?
string - Lua模式查询
我需要从一个更大的字符串中检测出一个单词say john ,say john is a good man 所以我有这个模式来找到这个词
并按如下方式使用它:
为了接受字母是否出现多次(例如jooohn 是个好人),我将模式修改为
我需要忽略单词之间可能出现的空格(或其他非字母字符)(例如joh;n is a good man),所以我将 [^az]* 添加到每个字母,结果模式是
现在这非常适合像“jooh!n is a good man”这样的词。但如果! 符号出现在重复字母中,则模式失败。例如,在jo!ohn is a good man中,没有检测到模式。我如何修改我的模式以实现这一目标?
编辑
例子:
这将打印
1 7
但
将只打印nil
我需要一个允许我在场景 2中检测joo!ohn的模式
lua - 为什么 ("bar"):find("(foo)?bar") 返回 nil?
不应该("bar"):find("(foo)?bar")
回来1, 3
吗?
print(("bar"):find("(foo)*bar"))
也print(("bar"):find("(foo)-bar"))
不会工作。
lua - Lua 模式匹配
我有一个文件,我从具有 RTF 格式标记的 Microsoft Lync 对话中提取值。示例文件如下:
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 >Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl;\red0\green0\blue0 ;} {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 Craig...\embo0 \embo please\embo0 \embo close\embo0 \embo >out\embo0 \embo of\embo0 \embo your\embo0 \embo old\embo0 \embo client\embo0 \embo >and\embo0 \embo re-open\embo0\f1\par {*\lyncflags rtf=1}}
使用 Lua 脚本,我试图删除 RTF 标签,然后只提取对话的文本。所以我的函数的结果应该是:
克雷格...请关闭您的旧客户并重新打开
我尝试使用带有正则表达式的 string.gsub 来匹配模式并用空格替换它们以只留下文本但它不起作用。这是我到目前为止的 string.gsub 代码:
任何建议将不胜感激!
额外的:
user1@capital.com @ 2013-01-18 17:48:03Z (TO: user2@capital.com)
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl;\red0\green0\blue0; } {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 works\embo0 \embo for\embo0 \embo me..\embo0 \embo how\ embo0 \embo about\embo0 \embo embedding\embo0 \embo 图片?\embo0\f1\par {*\lyncflags rtf=1}}
user1@capital.com @ 2013-01-18 17:48:57Z (TO: user2@capital.com)
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl;\red0\green0\blue0; } {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 I\embo0 \embo see\embo0 \embo it\embo0\f1\par {* \lyncflags rtf=1}}
user1@capital.com @ 2013-01-18 17:49:27Z (TO: user2@capital.com)
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl;\red0\green0\blue0; } {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 让我们\embo0 \embo try\embo0 \embo a\embo0 \embo 会议。\embo0 \f1\par {*\lyncflags rtf=1}}
xslt - Lua 或 XSL - 从字符串中提取单词 Lync
我有一个使用 Lua 和/或 XSL 处理的文档,因为我使用的解决方案允许两者。正在处理的数据是来自 Lync 2013 的 IM 对话的汇编。我已经能够编写一些模式匹配脚本,这些脚本在下面提取我的数据的一些值,但是由于用户能够配置他们希望他们的数据如何显示在他们的 IM 上,每个用户的数据存储方式不同。
我需要的是一个脚本,它将提取消息的 To、From、Date/Time 和 Content 中的所有值。我注意到每个单词,当包装在 RTF 标记中时,后面跟着字符串 '\embo0'。
有没有一种方法可以处理整个数据集,如下例所示,以在示例数据下产生我想要的结果?我拥有的脚本只能提取与我定义的模式匹配方案之一相匹配的对话部分,然后去除其他所有内容。
数据:
期望的输出:
string - 插件(WoW,Lua)导致严重错误
我正在搜索聊天中的某些单词,然后将它们发送到指定的聊天框它可以工作但随机导致错误并导致游戏崩溃的插件
崩溃后我打开作弊引擎浏览该区域,看看那里有什么
和插件代码:
谁能帮我解释为什么这会导致游戏崩溃?
string - 寻找“。” 用 string.find()
我正在尝试进行简单的字符串操作:获取文件名,不带扩展名。只是,string.find()
点似乎有问题:
而且只有点:
这是一个错误,还是我做错了什么?
string - Lua中使用特殊字符的字符串操作
我想在 Lua 中修剪一个字符串,但我觉得我很挣扎,因为字符串中的特殊字符。
例如str = "RG Ph 0%/15.00bpm"
我想删除之后的所有内容,包括"/"
以便str = "RG Ph 0%"
我找到了以下代码,但我认为它不能正确处理"%"
和"/"
:
有任何想法吗?
windows - 为什么 lua 的字符串模式匹配会这样做?
我有一个监控 CPU 和 GPU 温度的外部应用程序......
我使用 Lua 和外星人扩展来获取这些值(通过GetWindowText)并对这些值进行一些模式匹配,有效地从字符串中提取温度数字,默认情况下显示为CPU 67.875 °C
......
但也许我对 LUA 中的模式如何工作有错误的想法(因为它们看起来并不完全像正则表达式)?
我使用的模式[%d]+[.%d+]*
应该匹配 0 到 100.0 之间的任何数字,对吗?然而奇怪的是,当值达到 56.5 度左右时
,我得到了令人难以置信的奇怪输出(见链接)。
为什么会这样?
以及如何以 0 到 100 的格式提取正确的浮点值(作为字符串)XYY.ZZZ
,其中X
不是可选的,Y
是可选的,并且.
是可选的,除非Z
存在?