Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将查找实例转换为单个实例的正则表达式\_Java_Regex - Fatal编程技术网

Java 将查找实例转换为单个实例的正则表达式\

Java 将查找实例转换为单个实例的正则表达式\,java,regex,Java,Regex,我希望将\n替换为\\n,但到目前为止,我的正则表达式尝试不起作用(实际上,它本身是任何的,\n恰好是我在数据中的用例) 我需要的东西大致如下: any-non-\ followed by \ followed by any-non-\ 最终,我将把正则表达式传递给java.lang.String.replaceAll,这样一个正则表达式格式就很好了,但我可能可以将另一种样式的正则表达式转换成我所需要的 例如我在这个程序后打印出“真” 使用此选项确实有效: altered = ori

我希望将
\n
替换为
\\n
,但到目前为止,我的正则表达式尝试不起作用(实际上,它本身是任何的,\n恰好是我在数据中的用例)

我需要的东西大致如下:

any-non-\ followed by \ followed by any-non-\
最终,我将把正则表达式传递给java.lang.String.replaceAll,这样一个正则表达式格式就很好了,但我可能可以将另一种样式的正则表达式转换成我所需要的

例如我在这个程序后打印出“真”

使用此选项确实有效:

    altered  = original.replaceAll("\\n", "\\\\n");
字符串应该是

"[^\\\\]\\\\[^\\\\]"
对于正则表达式的字符串常量,必须将反斜杠增加四倍;如果只将它们加倍,它们将被转义为字符串,而不是正则表达式

所以实际的代码是

myString = myString.replaceAll("([^\\\\])\\\\([^\\\\])", "$1\\\\$2");
请注意,在替换中,四倍反斜杠现在被解释为两个反斜杠,而不是一个,因为正则表达式引擎没有对其进行解析Edit:实际上,正则表达式引擎会解析它,因为它必须检查反向引用

编辑:以上假设输入字符串中存在一个文本
\n
,该文本在字符串文本中表示为
“\\n”
。因为它显然有一个换行符(表示为
“\n”
),正确的替换应该是

myString = myString.replaceAll("\\n", "\\\\n");
对于任何其他特殊字符(
\t
\r
\0
\
等),必须重复此操作。如上所述,替换字符串看起来与正则表达式字符串完全相同,但与正则表达式字符串不同。

字符串应为

"[^\\\\]\\\\[^\\\\]"
对于正则表达式的字符串常量,必须将反斜杠增加四倍;如果只将它们加倍,它们将被转义为字符串,而不是正则表达式

所以实际的代码是

myString = myString.replaceAll("([^\\\\])\\\\([^\\\\])", "$1\\\\$2");
请注意,在替换中,四倍反斜杠现在被解释为两个反斜杠,而不是一个,因为正则表达式引擎没有对其进行解析Edit:实际上,正则表达式引擎会解析它,因为它必须检查反向引用

编辑:以上假设输入字符串中存在一个文本
\n
,该文本在字符串文本中表示为
“\\n”
。因为它显然有一个换行符(表示为
“\n”
),正确的替换应该是

myString = myString.replaceAll("\\n", "\\\\n");

对于任何其他特殊字符(
\t
\r
\0
\
等),必须重复此操作。如上所述,替换字符串看起来与正则表达式字符串完全相同,但实际上不同。

我不知道您到底需要它做什么,但您可以从中查看。他们有很多这样的方法,如果你找不到你要找的东西,你可以看看来源以找到灵感:)

我不知道你到底需要它做什么,但你可以从中看看。他们有很多这样的方法,如果你找不到你想要的东西,你可以看看来源以找到灵感:)

所以只要有1个反斜杠,你就想要2个,但是如果有2个,3个或4个。。。排成一列,别管他们

你想替换吗

(?<=[^\\])\\(?!\\+)([^\\])
这会改变字符串

hello\nworld and hello\\nworld and hello\\\nworld
进入


所以,只要有1个反斜杠,你就想要2,但如果有2,3或4。。。排成一列,别管他们

你想替换吗

(?<=[^\\])\\(?!\\+)([^\\])
这会改变字符串

hello\nworld and hello\\nworld and hello\\\nworld
进入



使用
changed=original.replaceAll(“\\n”,“\\\\n”)有什么问题?这正是我应该做的。

使用
changed=original.replaceAll(“\\n”,“\\\\n”)有什么问题?这正是我应该做的。

您需要对反斜杠字符进行转义,因此需要使用其中两个字符,例如“\\`”我希望将\n替换为“\n您真了不起……;)你的问题有点难理解。你有一个例子字符串,你也能给一个预期结果的例子吗?萨弗雷斯:我已经尝试了所有我能想到的方法。。。事情似乎起了作用。original不包含\,您需要转义original中的反斜杠字符,也需要转义。是的,有一个换行字符,但没有反斜杠。您需要转义反斜杠字符,因此需要使用其中两个字符,例如“\\`”我想用“\n你怎么样…”替换\n你的问题有点难理解。你有一个例子字符串,你也能给一个预期结果的例子吗?萨弗雷斯:我已经尝试了所有我能想到的方法。。。事情似乎起了作用。原始不包含\,您需要转义原始和预期的反斜杠字符。是的,有一个换行字符,但没有反斜杠。没有这样做。。。我用一个简单的代码更新了这个问题是的,但我不想让它为\n工作,因为可能有\(任何东西),我希望它是\(任何东西)。到目前为止,我在数据中仅有的示例是t\n,但我不想将代码限制为\n。@TofuBeer:我的观点是,这些字符实际上没有反斜杠——反斜杠仅在Java表示中。他们没有其他共同点。例如,
\n
相当于
\u000A
\t
相当于
\u0009
(完整列表位于)。问题也有点不同。。。\可以出现在JSON数据中的任何位置,而不仅仅是特定于Java的数据。进一步看,我确实验证了JSON中的\将被编码为\\。现在我;我会在它们出现时处理它们,并与数据提供程序一起正确编码JSON对象。@TofuBeer:那么,我想我还是不理解这些要求。是有反斜杠还是没有?不是我做的。。。我用一个简单的代码更新了这个问题是的,但我不想让它为\n工作,因为可能有\(任何东西),我希望它是\(任何东西)。到目前为止,我在数据中的唯一示例是t\n,但我不想限制