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

正则表达式不检测空格

鞠鸿雪
2023-03-14

我从< code>YouTube频道复制了一些订阅。这是<代码>“4

我试图删除这些数字中的空白字符,但是我做不到。我也尝试了<代码>。replaceAll(" "," ")方法,但也不起作用。

屏幕从 regex101.com

JSON Youtube代码:JSON Youtube

然后我使用JSON库来获取订阅,如下所示:

JSONObject jsonObject = new JSONObject();
    jsonObject = new JSONObject(content);
    JSONArray tabs = jsonObject.getJSONObject("contents")
            .getJSONObject("twoColumnBrowseResultsRenderer")
            .getJSONArray("tabs");
    JSONObject tabRenderer = tabs.getJSONObject(5).getJSONObject("tabRenderer");
    JSONObject sectionListRenderer = tabRenderer.getJSONObject("content").getJSONObject("sectionListRenderer");
    JSONArray contents2 = sectionListRenderer.getJSONArray("contents");
    JSONObject itemSectionRenderer = contents2.getJSONObject(0).getJSONObject("itemSectionRenderer").getJSONArray("contents").getJSONObject(0);
    JSONObject channelAboutFullMetadataRenderer = itemSectionRenderer.getJSONObject("channelAboutFullMetadataRenderer");

    String subs = channelAboutFullMetadataRenderer.getJSONObject("subscriberCountText").getJSONArray("runs").getJSONObject(0).getString("text");

最后,我使用< code>regex删除number中的空格:

subs = subs.replaceAll("\\s+", "");
System.out.println(subs);

我也试过这个,但它不起作用。我认为这不是一个常规的空间,但我不知道如何识别它。

 subs = subs.replaceAll(" ", "");

共有3个答案

郭弘方
2023-03-14

您需要转义反斜杠:

System.out.println(“4 372 236”.replaceAll(“\s” , “”));

指纹:4372236

匡安宜
2023-03-14

我建议您将该数字复制到记事本中,并使用“显示所有符号”选项。也许中间不仅仅有空格。

编辑:很抱歉没有使用评论功能,我需要声誉,它很糟糕。

程毅
2023-03-14

好的,伙计们,我发现了。它不是“为什么字符串替换不起作用?”的重复。我一直牢记Java中的字符串是不可变的。

数字之间没有简单的空格。这是无间断空间(U 00A0)。因此,正则表达式应如下所示

 subs = subs.replaceAll("[\\u202F\\u00A0]", "");

也许将来会对某人有所帮助:)谢谢@metters

 类似资料:
  • 我在java中有以下正则表达式- 但这仍然匹配“”。 整个代码-

  • 正则表达式测试器 支持仅使用表达式里的选中部分进行匹配 支持树形和表格两种结果查看方式 选中树结点或单元格时自动选中源文本中对应的部分 表格内容可导出为csv文件(在表格模式下,右击结果,选择弹出菜单里的"导出(*.csv)") 支持拖入文件作为匹配源文本 支持快捷键操作(F5运行, F4切换查询替换模式, F6切换结果显示方式, F2复制代码, F8切换焦点) 支持生成并拷贝C#代码到系统剪切板

  • 问题内容: 用于正则表达式的Java API 声明将匹配空格。因此,正则表达式应匹配两个空格。 这样做的目的是用单个空格替换两个连续空格的所有实例。但是,这实际上不起作用。 我对正则表达式或“空白”一词有严重的误解吗? 问题答案: 是的,你需要获取matcher.replaceAll()的结果:

  • 问题内容: 我需要Java中的正则表达式,可用于从任何URL检索domain.tld部分。所以https://foo.com/bar,HTTP://www.foo.com#bar,http://bar.foo.com都会返回foo.com。 我写了这个正则表达式,但它与整个网址匹配 我不确定我是否匹配“。” 角色权利。我试过了 ”。” 但是我从netbeans收到一个错误。 更新: tld不限于2

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 本文向大家介绍javascript使用正则表达式检测IP地址,包括了javascript使用正则表达式检测IP地址的使用技巧和注意事项,需要的朋友参考一下 正则表达式: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[