Android:PatternSyntaxException:语法错误 U_ILLEGAL_ARGUMENT_ERROR

2023-11-29

我在用着json-io将一些 JSON 数据转换为 Java 对象:

DataTransferContainer dataTransferContainer = (DataTransferContainer)JsonReader.jsonToJava(json);

DataTransferContainer 只是一个包含一些 GeoJson 元素的对象。对于这个问题来说并不重要。

上面的代码可以在 Android 之外的 JUnit 测试中运行,但是当我在 Android 上运行它时,我得到了这个 RuntimeException:

12-07 20:12:51.260: E/AndroidRuntime(2002): FATAL EXCEPTION: AsyncTask #1
12-07 20:12:51.260: E/AndroidRuntime(2002): java.lang.RuntimeException: An error occured while executing doInBackground()
12-07 20:12:51.260: E/AndroidRuntime(2002):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.lang.Thread.run(Thread.java:1019)
12-07 20:12:51.260: E/AndroidRuntime(2002): Caused by: java.lang.ExceptionInInitializerError
12-07 20:12:51.260: E/AndroidRuntime(2002):     at com.mydomain.myapp.dataprocessing.JsonConverter.jsonObjectToObject(JsonConverter.java:22)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at com.mydomain.myapp.dataprocessing.DataManagerTask.processDataFromRemote(DataManagerTask.java:104)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at com.mydomain.myapp.dataprocessing.DataManagerTask.doInBackground(DataManagerTask.java:56)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at com.mydomain.myapp.dataprocessing.DataManagerTask.doInBackground(DataManagerTask.java:18)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
12-07 20:12:51.260: E/AndroidRuntime(2002):     ... 4 more
12-07 20:12:51.260: E/AndroidRuntime(2002): Caused by: java.util.regex.PatternSyntaxException: Syntax error U_ILLEGAL_ARGUMENT_ERROR
12-07 20:12:51.260: E/AndroidRuntime(2002): (\d{2})[:.](\d{2})[:.](\d{2})[.](\d{1,10})([+-]\d{2}[:]?\d{2}|Z)?
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.regex.Pattern.compileImpl(Native Method)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.regex.Pattern.compile(Pattern.java:400)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.regex.Pattern.<init>(Pattern.java:383)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at java.util.regex.Pattern.compile(Pattern.java:374)
12-07 20:12:51.260: E/AndroidRuntime(2002):     at com.cedarsoftware.util.io.JsonReader.<clinit>(JsonReader.java:114)
12-07 20:12:51.260: E/AndroidRuntime(2002):     ... 10 more

在 JsonReader 中,第 114 行如下所示:

private static final Pattern timePattern1 = Pattern.compile("(\\d{2})[:.](\\d{2})[:.](\\d{2})[.](\\d{1,10})([+-]\\d{2}[:]?\\d{2}|Z)?");

我能够缩小范围。就是这一部分:[:.]

它只是意味着“任何字符”或“冒号”。 Android 上有什么问题吗?


在 ICU 正则表达式模式中,括号表达式模式不能以:.

您需要将模式更改为

Pattern.compile("(\\d{2})[.:](\\d{2})[.:](\\d{2})[.](\\d{1,10})([+-]\\d{2}:?\\d{2}|Z)?")

请注意更改:

  • [:]更改为:
  • [:.]更改为[.:]

Android中使用的正则表达式库是ICU,它的特点之一是它支持POSIX字符类outside括号表达式。这意味着你可以写[[:digit:]]匹配数字,或者[:digit:](这在大多数其他正则表达式风格中无效,包括 POSIX)。 ICU 正则表达式解析器似乎在解析以以下开头的括号表达式时出现问题:这肯定是一个错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:PatternSyntaxException:语法错误 U_ILLEGAL_ARGUMENT_ERROR 的相关文章

随机推荐

  • 链接两个 D3 图

    我正在尝试链接两个 D3 图 以便选择右侧直方图的一部分 导致某个散点图显示在左侧 This是我的尝试 我当前的问题是为什么正确的图没有渲染 我认为这可以追溯到如何在 d3 中创建和引用多个 SVG 标签 D3 有针对这种情况的 SVG 控
  • 使用包将 Python 类拆分为多个模块

    我在 python 中编写了一些代码作为一个类 但现在我正在尝试将其作为包分发 但我在弄清楚不同的部分应该如何组合在一起时遇到了一些麻烦 因此 当我最初编写代码时 我有一个包含一些函数的类 其中包括 init 功能 我现在已将每个函数拆分为
  • 从 XSLT 2 中元素值的语义层次结构创建父子元素

    我在 XML 内容中有一系列 P 标记 它们在其初始值内具有语义层次结构 但是 P 标记是线性的 寻找 XSLT 2 转换 语义层次如下 1 a I A 正则表达式序列如下
  • 何时使用 PerThreadLifetimeManager?

    我按照下面链接的示例来设置 Unity 以与我的服务层一起使用 我的项目的设置与本文中的项目非常相似 我了解一切 除了到底为什么PerThreadLifetimeManager注册服务依赖项时使用 请记住 我还使用了也在我的服务层中使用的通
  • Python 目录中的最新文件

    我正在编写一个脚本 试图列出以 xls 结尾的最新文件 这应该很容易 但我收到了一些错误 Code for file in os listdir E Downloads if file endswith xls print file new
  • 为什么manage.pysyncdb无法连接到google云sql数据库?

    在最近更新 Google App Engine 上的应用程序期间 我正在使用以下内容更新数据库 SETTINGS MODE prod manage py syncdb 我上次运行它时有效 但现在我收到以下错误 Traceback most
  • 如何在 PHP 中检查数据是否为空或空格

    我有一个需要用户名的输入字段 场景是 我如何防止用户在该字段中提供空格 我已经添加了required在输入字段中 这样我可以防止用户将其留空
  • 用正在呈现的控件完全替换 ItemsControl ContentPresenter

    我正在使用 ItemsControl 根据我的模型生成控件列表 在查看可视化树时 我注意到每个渲染的控件都包装在 ContentPresenter 中 添加的控件是第 3 方控件 旨在在每个控件之间显示分隔符 如果它们是同级控件 这允许用户
  • Excel 文件被覆盖而不是连接 - Python - Pandas

    我正在尝试使用以下脚本将其中的所有 Excel 文件和工作表合并为一个 它有点工作 但随后 Excel 文件 c xlsx 被每个文件覆盖 因此只有最后一个 Excel 文件被连接 不知道为什么 import pandas as pd im
  • grails 模板 - 脚手架控制器

    我是 grails 的新手 我现在正在研究我的脚手架模板 特别是我的控制器 每次生成它时我都想要一个定制的控制器 所以我使用了 安装模板 我总是在控制器上创建一个命令对象 是否可以将域类中的字段包含到生成的控制器中的命令对象中 我知道我必须
  • Java - 如何从哈希图中找到最接近特定数字的值?

    嗨 我有一个HashMap
  • Javascript:使用 setTimeout 重试的函数

    我有一个函数downloadItem由于网络原因可能会失败 我希望能够在实际拒绝该项目之前重试几次 重试需要超时 因为如果出现网络问题 则立即重试是没有意义的 这是我到目前为止所拥有的 function downloadItemWithRe
  • 这段 javascript 行中的冒号 (:) 是什么意思?

    下面第3 6行中的 是什么意思 function displayError error var errorTypes 0 Unknown error 1 Permission denied 2 Position is not availab
  • 使用 Asynctask 在列表视图中显示数据

    我成功在列表视图中显示了来自 Web 服务 JSON 的数据 但我想添加 Asyntask 我可以在我的代码中放置代码 Asyntask 的位置 这是我的代码 用于在列表视图中显示数据 public class Jadwal remix e
  • JQuery 数据表中的 TableTools 导出不起作用

    我已经为此苦苦挣扎了两天 我已经在数据表论坛上发帖了 但没有得到回复 所以我希望这里的社区能够提供帮助 我在这里阅读过有关此问题的类似帖子 但正如许多帖子所建议的那样 我已经使用了 sSwf 的正确路径 出现导出按钮并加载所有资源 但是 单
  • UITableViewCell 无法用一根手指点击来点击,但可以用两根手指点击

    我创建了一个表视图 并且 tableViewCell 无法用一根手指单击 但是当我尝试用两根手指单击 tableViewCell 时 会发生单击事件 我不知道为什么会出现这种情况 我在 tableView 中创建了一个自定义单元格 Invi
  • 将公式转换为 CNF

    有没有办法使用 z3 将公式转换为 CNF 使用 Tseitsin 式编码 我正在寻找类似的东西simplify命令 但保证返回的公式为 CNF 您可以使用apply命令来执行此操作 我们可以为该命令提供任意战术 策略 有关 Z3 4 0
  • Crystal Reports 打印纵向而不是横向

    我在 SAP Crystal Reports 14 1 4 1327 中创建了一个非常简单的测试报告 rpt 文件 我在页面设置中将页面方向设置为横向 如果我从 Crystal Reports Designer 打印文档 它将以横向方式正确
  • 如何在Form1、WinForms C#中使用Form2的变量?

    我在 Visual Studio 2013 中有一个解决方案 其中包含两个表单 我想要当在 Form2 中按下按钮时 变量flag fb已更新 我在 Form1 中使用它的值 有什么办法可以做到这一点吗 谢谢 方法一 使用参数化构造函数在表
  • Android:PatternSyntaxException:语法错误 U_ILLEGAL_ARGUMENT_ERROR

    我在用着json io将一些 JSON 数据转换为 Java 对象 DataTransferContainer dataTransferContainer DataTransferContainer JsonReader jsonToJav