当前位置: 首页 > 知识库问答 >
问题:

仅删除特定字符之间的空格

卓嘉良
2023-03-14

我只需要删除特定字符之间的一些空格。这是我的数据:

#1 2 5 1#
#   5 5 3#: 100% #5 55#
#554     #: 23    
#559#: 30%
#4 79#: 2 0 0#%
#473#: 20 #47  4#
#4  7  4 43 33 5 5#: 15s
#4 79#: 195%
#473#: 20 # 474#
#475#: 14.5s

我希望删除两个##标签之间的所有空白,这些空白除了数字之外没有任何其他分隔。我的数据应该如下所示:

#1251#
#553#: 100% #555#
#554#: 23    
#559#: 30%
#479#: 2 0 0#%
#473#: 20 #474#
#474433355#: 15s
#479#: 195%
#473#: 20 #474#
#475#: 14.5s

我目前正在尝试在PHP中使用以下正则表达式来preg_replace这些空格,但是,我尝试过的所有内容都失败了。

(?:[#])(?:([\s])*[0-9]*)*(?:[#])

调试演示

共有2个答案

马奇略
2023-03-14

您可以将< code > preg _ replace _ callback()与以下正则表达式一起使用:

/^#.*?#:?/m

简单来说:断言字符串开头的位置,匹配单个#字符,后跟除换行符之外的任何字符,直到下一个#,匹配尽可能少(懒匹配)。然后匹配一个,如果找到的话。m修饰符用于启用多行匹配。

基本上,表达式匹配第一个 # 和第二个 # 之间的所有内容。找到匹配项后,将其传递给回调函数,在该函数中,将使用str_replace() 删除所有空格。

preg_replace_callback('/^#.*?#:?/m', function ($matches) {
    return str_replace(' ', '', $matches[0]);
}, $text);

演示

路奇
2023-03-14

这个正则表达式的目标是你想要的所有空格。您可以用空字符串< code>preg_replace它们。

(?:#|\G)\d*\K\s+(?=[\d\s]*#)

看演示

作为第二种选择,由于您的行似乎是以<code>#

(?m)(?:^#|\G)\d*\K\s+(?=[\d\s]*#)

解释说明

(?:#|\G)\d*\K\s+(?=[\d\s]*#)
    < li >匹配下面的正则表达式< code >(?:#|\G) < ul > < li >匹配此替代项(仅当此替代项失败时尝试下一个替代项)< code># < ul > < li >逐字匹配字符“#”< code > #
    < li >在匹配尝试开始时断言位置(第一次尝试的字符串开始)< code>\G
  • 在零到无限次之间,尽可能多地回馈(贪婪)*
  • 在一次和无限次之间,尽可能多次,根据需要回馈(贪婪)
  • 匹配以下列表中存在的单个字符 [\d\s]*
    • 在零到无限次之间,尽可能多地回馈(贪婪)*
    • “数字”(在任何 Unicode 脚本中为 0–9)\d
    • “空格字符”(任何 Unicode 分隔符、制表符、换行符、回车符、垂直制表符、换行符、换行符、下一行)\s

 类似资料:
  • 我只需要删除字符之间的破折号,但按照我的方式,我需要运行两个单独的命令-是否有一种方法可以只使用一个?它必须允许使用法语字符。 期望的结果来自以下方面: 对此: 按照上面的模式,我只能修改第二个句子,或者修改第一个句子,但是我想用一个模式来修改它们。。 regex匹配第一句: https://regex101.com/r/fHQNYP/1 与第二句相匹配: https://regex101.com

  • 问题内容: 我需要从字符串中删除所有字符,然后再在字符串中出现此字符: 不知道我该怎么做。 问题答案: 您可以使用strstr做到这一点。

  • 问题内容: 如何从此示例值获取子字符串: 我希望它返回。因此,基本上,我们需要删除之后的所有信息。 更多示例:1234_abc 问题答案: 您可以使用和: 警告:只有在您的字符串中确实包含下划线的情况下,才能保证此方法有效 更新 此外,如果从Oracle 10g开始运行,则可以采用Regex路径,该路径可以更强大地处理异常。

  • 本文向大家介绍C语言之从字符数组中删除特定的字符,包括了C语言之从字符数组中删除特定的字符的使用技巧和注意事项,需要的朋友参考一下 从字符数组中删除特定的字符,即输入要删除的指定字符,利用for循环找到非指定字符,将非指定字符输出即可。以下为具体的实现方法: 通过具体的实现方法,希望可以对大家有所帮助。

  • 问题内容: 我想删除指定字符或一组字符之前的所有字符(例如): 现在,我想删除以前的(或更具体地说是)。有什么建议? 问题答案: 使用。只需匹配所有字符,然后将匹配的字符替换为。

  • 问题内容: 我在线性布局中有一堆按钮。但是有空格按钮。我将padding设置为0,但是没有变化。在http://www.mail- archive.com/android- developers@googlegroups.com/msg51104.html上 已经有相同的问题,但那里没有答案。请你帮我一下。 问题答案: 尝试使用属性。例如,要减少左侧/右侧的空间(假设您有一组水平的按钮),可以执行