我想从罗马号相匹配I,以IX用正则表达式.
val pattern = "(\\sI\\s|\\sII\\s|\\sIII\\s|\\sIV\\s|\\sV\\s|\\sVI\\s|\\sVII\\s|\\sVIII\\s|\\sIX\\s)".r
Run Code Online (Sandbox Code Playgroud)
这只能匹配大写.我想忽略这个案子.
我的测试字符串是"Mark iii ".
Bar*_*ers 29
尝试这样的事情:
"\\s(?i)(?:I{1,3}|IV|VI{0,3}|I?X)\\s"
Run Code Online (Sandbox Code Playgroud)
其中,(?i)启用不区分大小写的匹配.
请注意,您可能希望使用单词边界而不是空格字符:
"\\b(?i)(?:I{1,3}|IV|VI{0,3}|I?X)\\b"
Run Code Online (Sandbox Code Playgroud)
否则"Mark iii."将无法匹配.
lre*_*der 14
使用正则表达式前面的Java正则表达式特殊构造(?i)进行不区分大小写的匹配:
val patternic ="""(?i)(\ sI\s |\sII\s |\sIII\s |\sIV\s |\sV\s |\sVI\s |\sVII\s |\sVIII\s | \六\ S) """ R
scala解释器中的示例:
scala> val pattern =
"""(\sI\s|\sII\s|\sIII\s|\sIV\s|\sV\s|\sVI\s|\sVII\s|\sVIII\s|\sIX\s)""".r
pattern: scala.util.matching.Regex = (\sI\s|\sII\s|\sIII\s|\sIV\s|\sV\s|\sVI\s|\sVII\s|\sVIII\s|\sIX\s)
scala> pattern findPrefixMatchOf " VI "
res3: Option[scala.util.matching.Regex.Match] = Some( VI )
scala> pattern findPrefixMatchOf " vi "
res6: Option[scala.util.matching.Regex.Match] = None
scala> val patternic = """(?i)(\sI\s|\sII\s|\sIII\s|\sIV\s|\sV\s|\sVI\s|\sVII\s|\sVIII\s|\sIX\s)""".r
patternic: scala.util.matching.Regex = (?i)(\sI\s|\sII\s|\sIII\s|\sIV\s|\sV\s|\sVI\s|\sVII\s|\sVIII\s|\sIX\s)
scala> patternic findPrefixMatchOf " VI "
res7: Option[scala.util.matching.Regex.Match] = Some( VI )
scala> patternic findPrefixMatchOf " vi "
res9: Option[scala.util.matching.Regex.Match] = Some( vi )
Run Code Online (Sandbox Code Playgroud)
最近,我收到了一个非常长的不区分大小写的 Java 正则表达式,我决定不要弄乱它并保持原样。这是一种 Java 方法,但也可以在 Scala 中使用。
import java.util.regex.Pattern
val EmailPattern = Pattern.compile(
"PatternGoesHere",
Pattern.CASE_INSENSITIVE
)
val result = EmailPattern.matcher("StringToMatch").matches()
Run Code Online (Sandbox Code Playgroud)