替换两个单词之间可能有一个或多个任何类型的空格

发布于 2024-07-23 12:35:46 字数 165 浏览 7 评论 0原文

我是正则表达式的新手,并且在看似简单的情况下遇到了困难。

我需要将“foo bar”替换为“fubar”,其中 foo 和 bar 之间有任意数量和种类的空白。

无论如何,我使用 php 的 eregi_replace() 来完成此操作。

先谢谢您的帮助。

I'm a newcomer to regular expressions, and am having a hard time with what appears to be a simple case.

I need to replace "foo bar" with "fubar", where there is any amount and variety of white space between foo and bar.

For what it's worth, I'm using php's eregi_replace() to accomplish this.

Thanks in advance for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

离线来电— 2024-07-30 12:35:50

为了确保在 foobar 上进行整个单词匹配,添加单词边界至关重要。 \s+ 将匹配一个或多个空格。

代码:(演示)

$strings = [
    'foo barf',
    "foo bar",
    "kungfoo bar"
];

var_export(preg_replace('/\bfoo\s+bar\b/', 'fubar', $strings));

输出:

array (
  0 => 'foo barf',
  1 => 'fubar',
  2 => 'kungfoo bar',
)

To ensure that you are making whole word matches on foo and bar, it is critical to add word boundaries. \s+ will match one or more whitespaces.

Code: (Demo)

$strings = [
    'foo barf',
    "foo bar",
    "kungfoo bar"
];

var_export(preg_replace('/\bfoo\s+bar\b/', 'fubar', $strings));

Output:

array (
  0 => 'foo barf',
  1 => 'fubar',
  2 => 'kungfoo bar',
)
遗心遗梦遗幸福 2024-07-30 12:35:49

我也更喜欢 preg_replace,但为了完整起见,这里是 ereg_replace

$pattern     = "foo[[:space:]]+bar";
$replacement = "fubar";
$string = "foo    bar";
print ereg_replace( $pattern, $replacement, $string);

打印“fubar”

I also prefer preg_replace, but for completeness, here it is with ereg_replace:

$pattern     = "foo[[:space:]]+bar";
$replacement = "fubar";
$string = "foo    bar";
print ereg_replace( $pattern, $replacement, $string);

that prints "fubar"

往日情怀 2024-07-30 12:35:49

试试这个:

find = '(foo)\s*(bar)'
replace = '\\1\\2'

\s 是任何空白字符的元字符。

Try this:

find = '(foo)\s*(bar)'
replace = '\\1\\2'

\s is the metachar for any whitespace character.

月野兔 2024-07-30 12:35:48

我不确定 eregi_replace 语法,但你想要这样的东西:

Pattern: foo\s*bar
Replace with: fubar

I'm not sure about the eregi_replace syntax, but you'd want something like this:

Pattern: foo\s*bar
Replace with: fubar
故事还在继续 2024-07-30 12:35:48

...= preg_replace(' /foo\s+bar/', 'fubar', ...);

... = preg_replace('/foo\s+bar/', 'fubar', ...);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文