Regex 帮助我改进现有的正则表达式代码
我正在使用这个与/\{$?[^]+\?[^]+?[^ |]+?[\\\\\]?[^\}]+?\}/perl兼容的正则表达式来匹配字符串,例如: {$stringasdfasdf你能听到我说话吗?| ucfirst | strtoupper} 输出此文件:Regex 帮助我改进现有的正则表达式代码,regex,Regex,我正在使用这个与/\{$?[^]+\?[^]+?[^ |]+?[\\\\\]?[^\}]+?\}/perl兼容的正则表达式来匹配字符串,例如: {$stringasdfasdf你能听到我说话吗?| ucfirst | strtoupper} 输出此文件: Array ( [0] => {$string#asdf#asdf can you hear me? |ucfirst|strtoupper} [1] => string [2] => asdf#asd
Array
(
[0] => {$string#asdf#asdf can you hear me? |ucfirst|strtoupper}
[1] => string
[2] => asdf#asdf
[3] => can you hear me?
[4] => ucfirst|strtoupper
)
Array
(
[0] => {$string#asdf#asdf can you hear me? ucfirst|strtoupper}
[1] => string
[2] => asdf#asdf
[3] => can you hear me? ucfirst
[4] => strtoupper
)
如果与PHP的preg_replace_回调函数一起使用
但是像{$stringasdfasdf你能听到我说话吗?ucfirst | strtoupper}这样的字符串会输出以下内容:
Array
(
[0] => {$string#asdf#asdf can you hear me? |ucfirst|strtoupper}
[1] => string
[2] => asdf#asdf
[3] => can you hear me?
[4] => ucfirst|strtoupper
)
Array
(
[0] => {$string#asdf#asdf can you hear me? ucfirst|strtoupper}
[1] => string
[2] => asdf#asdf
[3] => can you hear me? ucfirst
[4] => strtoupper
)
您能否按照自己的意愿对其进行改进,使其能够匹配字符串,如:
{$stringasdfasdf你能听到我说话吗?ucfirst | strtoupper}注意:|在ucfirst前面删除,但不影响数组的结果。ie输出应与上面打印的第一个数组相同此正则表达式字符串已与您提供的两个示例匹配。你到底在问什么
不清楚您到底想要什么,但根据您指定的内容,以下是我的最佳猜测:
{\$([^#]*)#(\S*) (.*?) (\S*)}
这将为匹配项1-4提供以下内容
一切都到了第一个标志
第一个标志之后和下一个空格之前的所有内容
2和4之间的所有其他内容
不包含空格的最后一个字符串
在这个例子中
{$string#asdf#asdf can you hear me? ucfirst|strtoupper}
我们有:
一串
asdfasdf
你能听到我说话吗?
ucfirst | strtoupper
这个截图是什么工具的?我不知道这个工具的名字,但是它非常有用。