我正在尝试从包含标题、段落等的文本中删除有效的罗马数字(编号)...
我正在使用这个正则表达式:
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})(?:\)|\.))
这匹配一个罗马数字,后面跟着 )
或 .
字符。有一篇关于匹配罗马数字的好文章 Regular Expressions Cookbook作者:Steven Levithan,O'Reilly 的 Jan Goyvaerts。
关于java - 使用罗马数字删除编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147872/