【发布时间】:2013-02-14 06:46:13
【问题描述】:
我在这里看到了很多关于一般正则表达式的问题,但问题是它们通常(像我的一样)非常本地化,如果不是正则表达式专家,很难推断出来..
我的字符串包含引号和大括号等字符,它们以使正则表达式更加困难而闻名。
我想知道执行此任务所需的表达式字符串(搜索、替换)。
换句话说,在:
ereg_replace (string pattern, string replacement, string subject)
我需要string pattern 和string replacement 表达式。
我的字符串是
array('val' => 'something', 'label' => 'someword'),
我需要更改最后一部分:
'label' => 'someword'),
到
'label' => __('someword','anotherstring')),
我将为此使用 php,但我也想使用 Notepad ++ 对其进行测试(并在其他情况下使用)。 (我不知道它是否真的改变了搜索和替换字符串)。
请注意,字符串someword 也可以是SomeWord 或SOMEWORD 甚至Some word 或Some_Word 在大小写上,这意味着它可以包含空格、下划线或实际上几乎任何字符...)
编辑我:忘了说__() 部分当然是用于翻译的wordpress 文本域功能。例如__('string','texdomain')
编辑二:
很抱歉,如果我在 cmets 中过于迫切或要求过高,我确实会尝试理解,而不仅仅是复制粘贴在其他情况下可能对我不起作用的解决方案.. :-)
编辑三:
在THIS 工具的帮助下,我了解到我的基本误解是在 regex 中使用 VARIABLES 的可能性。
$1 实际上是我更好理解所需要的。
在记事本++中也可以使用的(非常简单的)模式
Pattern: 'label' => ('.*')
Replace: 'label' => __(\1,'textdomain')
(在notepad++中它被称为Tag Region (not var),它被标记为\1
【问题讨论】:
-
我不明白你到底想要什么,'label' => 'someword') 到 'label' => __('someword','anotherstring')) ?
-
@Akam - 是的.. 但
someword部分是未知字符串,而不是字面意义上的someword。它可以是任何东西..anotherstring部分但是是一个固定的字符串。 -
@ObmerkKronen 正则表达式不是很灵活。对于您的问题this 中提供的给定输入和输出,将为您提供所需的结果。正则表达式模式是:
'label' => ('.*')如果您只需要使用 IDE 快速替换就足够了。 -
'label' => '*'基本上是您尝试匹配的模式(即您是否总是尝试将值替换为标签键)? -
@MikeBrant - 实际上我想用 __('originalvalue','anotherstring') 包装该值
标签: php regex wordpress notepad++