java - 使用罗马数字删除编号
问题描述
我正在尝试从包含标题、段落等的文本中删除有效的罗马数字(编号)...
我正在使用这个正则表达式:
Pattern ROMAN = Pattern.compile("^[([]?x{0,3}(i[xv]|v?i{0,3})[)\.]/]{1,2}", Pattern.CASE_INSENSITIVE);
虽然它也匹配空括号。
我想要做的是删除以下内容:
Input :
iv. foo foo foo.
Output:
foo foo foo.
Input :
v) foo foo foo.
Output:
foo foo foo.
但在不使用它们进行编号时也不做任何事情:
Input :
foo foo foo i) foo v) .
Output:
foo foo foo i) foo v) .
正则表达式应匹配的另一个示例:
iv)
X)
ix/
V/
x.
IV.
解决方案
像下面的Regex怎么样:
^((?=[mdclxvi])m*(c[md]|d?c{0,3})(x[cl]|l?x{0,3})(i[xv]|v?i{0,3})(?:\)|\.))
这匹配一个罗马数字,后跟一个)
或.
字符。Steven Levithan 和来自 O'Reilly 的 Jan Goyvaerts有一篇关于匹配罗马数字正则表达式食谱的好文章。
推荐阅读
- javascript - 我应该在哪里实现带有分页的 for 循环?
- drake - 在 Drake 中模拟 MultiBodyPlant 时是否可以绕过 SpatialInertia?
- php - 如何使用加载更多按钮而不是分页来显示产品。任何想法?
- javascript - 无效合并运算符不工作或未启用?
- sql - 如何使用oracle sql将所有表从一个数据库复制到另一个数据库
- java - 无法为 Android 构建测试 DPC
- python - 为 python 3.9 构建一个 uwsgi 插件失败,它适用于旧版本。还有其他选择吗?
- python - uwsgi 无法从 .ini 文件中为 Django 提供服务
- r - 错误:美学长度必须为 1 或与数据相同
- python - IndexOutOfBoundsError 合并排序 Python