[英]Regex - Replace single character after a string in scala
我的文字类似于:
"ciao cos? come stai??"
我想在一个字符序列(即[a-zA-Z0-9])之后用另一个字符替换(在使用Regex的Scala中)一个问号。 因此,在前面的示例中,如果我们假设我要替换“?” 带有“ _”的结果应为:
"ciao cos_ come stai_?"
编辑 :是的,我尝试了一些也在SO上找到的解决方案,例如此链接中的 。 在Scala中,我尝试过:
val text = "some? ??"
val regex = "/([a-zA-Z0-9])?/".r
val text11 =regex.replaceAllIn(text, "_")
但是也:
val text = "some? ??"
val regex = "/([a-zA-Z0-9])?([a-zA-Z0-9])/".r
val text11 =regex.replaceAllIn(text, "_")
原始链接发布在上一个链接中,并在输入中添加了另一个字符串,但它不起作用。
谢谢
我不了解scala,但经过研究后,我设法为您构建了一些东西。
如果您只想处理英文字符,请在这里使用正则表达式
val str = "ciao cos? come stai??".replaceAll("""((?i)[A-Z]+)\?""", "$1_");
说明 :
(?i)
:表示不区分大小写。 [AZ]+
:一个或多个英文字母 ()
:捕获组 ((?i)[AZ]+)
:捕获一个或多个英文字母(无论大小写) (\\?)
:捕获文字字符“?” 在第二组中(它必须用反斜杠转义,因为问号在正则表达式中具有特殊含义)。 ((?i)[AZ]+)\\?
:立即在第一个捕获组中捕获尽可能多的字母,然后在第二个捕获组中捕获一个问号。
$1
:放置第一个捕获组的内容
$1_
:将第一个捕获组的内容放在下划线之后。 问号将消失。 要处理来自任何语言的任何字母(例如,法语字母“é”,您可以使用以下代码):
val str = "j'aime le karaté?".replaceAll("""(\p{L}+)\?""", "$1_");
\\p{L}
:在任何情况下,代表任何unicode字母。 我使用此站点来测试正则表达式:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.