我的PHP脚本具有以下格式的函数i8n('content')
,但我需要找到i8n中的所有字符串。
使用一些正则表达式,我设法获得了接近我想要的结果。
RegEx: i8n\('(.*)'\)
Content: i8n('First Message.');
Result: First Message.
对于这种情况,RegEx是完美的。当同一行上有其他内容并最终合并结果时,就会出现问题。
RegEx: i8n\('(.*)'\)
Content: logErrorUser(i8n('First Message.'), 500, date(), i8n('Second Message, same line.'));
Result: First Message.'), 500, date(), i8n('Second Message, same line.
我如何获得每一个单独?
您应该使用preg_match_all()
函数并修改正则表达式:
preg_match_all()
将为您提供所有找到的结果;i8n\('(.*)'\)
正则表达式中,您将捕获组与.*
标记一起使用,这意味着任何字面含义。因此,它将返回I8N('
子字符串之后的所有符号。为了避免这种情况,您应该从捕获组中排除需要捕获的行的结尾,如下所示:I8N\('([^']*)
,这样它将返回I8N('
子字符串之后和最近的'
符号之前的所有符号。UPD:您可以使用这个站点来构建您的regexp并实时测试它。此外,请注意preg_match_all()
不会返回带有结果的数组,它只返回个完全模式匹配的数目(可能为零),如果发生错误则返回false
。
问题内容: 我正在解析的字符串中可能包含任意数量的带引号的字符串(我在解析代码,并尝试避免使用PLY)。我想找出是否有子字符串被引用,并且我有子字符串索引。我最初的想法是使用re查找所有匹配项,然后找出它们代表的索引范围。 似乎我应该将re与类似的正则表达式一起使用(目前,我避免使用三引号和此类字符串)。当我使用findall()时,会得到一个匹配字符串的列表,虽然有些不错,但我需要索引。 我的子
在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。
我对正则表达式很陌生,正在寻找一个匹配任何东西的表达式,除了所有匹配给定正则表达式的东西。我已经找到了除了特定字符串以外的任何东西的方法,但是我需要它不匹配一个正则表达式。它还必须在Java工作。 背景:我正在使用ANSI颜色的字符串。我想取一个字符串,它有一些文本,可能是用Ansi颜色代码格式化的,并删除除那些颜色代码以外的任何东西。这将给出附加到字符串上的任何字符的当前颜色格式。 格式化字符串
问题内容: 我试图返回一个数组或切片,针对字符串针对特定正则表达式的所有匹配项。字符串是: 我想返回一个花括号之间所有字符串都匹配的数组。我尝试使用regexp软件包来完成此操作,但无法弄清楚如何返回我要查找的内容。这是我当前的代码: 但是,无论我尝试什么,每次返回的结果都是一片空白。 问题答案: 首先,您不需要正则表达式定界符。其次,使用原始字符串文字定义一个正则表达式模式是个好主意,您只需要使
这是与java正则表达式匹配的所有重叠子字符串的后续。 有没有办法让这段代码更快?
问题内容: 我想查找没有重复数字的10位数字,例如: 目前,我正在使用正则表达式,但只能匹配10位数字(它不检查重复项。我正在使用此正则表达式: 可以使用正则表达式完成此操作,还是有更好的方法来实现此目的? 问题答案: 此正则表达式有效: 这使用锚定的否定前瞻和后向引用来断言没有重复的字符。 观看带有示例的现场演示。 在Java中: