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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
C# 从字符串中删除额外的文本和标点符号,只保留微笑?_C#_Regex_Emoticons - Fatal编程技术网

C# 从字符串中删除额外的文本和标点符号,只保留微笑?

C# 从字符串中删除额外的文本和标点符号,只保留微笑?,c#,regex,emoticons,C#,Regex,Emoticons,我在使用正则表达式时遇到了一些问题。你能帮帮我吗?下面是我试图解决的问题- 输入:,…:你今天好吗(* 输出:D:):p:( 基本上,我想删除输入字符串中的标点符号和文本,比如-(,:;等),并用空字符串替换它们。但我想保留微笑-:),:(或:p。我已经编写了以下代码,但它不起作用 Regex=“[A-Za-z]|:[D(p(]”” 但它也删除了“:D和:p”smilie。不太完美的解决方案: string text = ":,... :D..:::))How are you today :P?

我在使用正则表达式时遇到了一些问题。你能帮帮我吗?下面是我试图解决的问题-

输入:,…:你今天好吗(*

输出:D:):p:(

基本上,我想删除输入字符串中的标点符号和文本,比如-(,:;等),并用空字符串替换它们。但我想保留微笑-:),:(或:p。我已经编写了以下代码,但它不起作用

Regex=“[A-Za-z]|:[D(p(]””


但它也删除了“:D和:p”smilie。

不太完美的解决方案:

string text = ":,... :D..:::))How are you today :P?..:(*";
text = text.Replace(":)", "@@@)");
text = text.Replace(":D", "@@@D");
text = text.Replace(":P", "@@@P");

// clean up your punctuation marks here
//

text = text.Replace("@@@)", ":)");
text = text.Replace("@@@D", ":D");
text = text.Replace("@@@P", ":P");

不太完美的解决方案:

string text = ":,... :D..:::))How are you today :P?..:(*";
text = text.Replace(":)", "@@@)");
text = text.Replace(":D", "@@@D");
text = text.Replace(":P", "@@@P");

// clean up your punctuation marks here
//

text = text.Replace("@@@)", ":)");
text = text.Replace("@@@D", ":D");
text = text.Replace("@@@P", ":P");

以下正则表达式字符串应适用于您:

(((?<!:)[^:])|(:(?![PD\(\)])))[^:]*
(?
它由两部分组成:

  • ((?|
    (:(?![PD\(\)]))
  • [^:::*
  • 第一部分是使用的OR(
    |
    )语句。它通过查找以下任一项来查找不包含笑脸的文本块中的第一个字符:

    一个明显不是笑脸的角色:

  • 任何前面没有冒号的字符:
    (?)
  • 并且本身不是冒号:
    [^::
  • 或不后跟笑脸字符的冒号:

  • 冒号
  • 后面不是笑脸的后半部分:
    (?![PD\(\)])
  • 第二部分(
    [^::::]*
    )继续查找,直到找到一个可能的笑脸(冒号)的开头

    此正则表达式当前仅查找以下smiley:

    • :D
    • :P
    • :(
    • :)
    您可以更新OR语句的后半部分以查找其他笑脸


    总而言之,这个正则表达式应该找到所有不属于笑脸的部分。您只需在变量中声明它,然后调用,传入输入字符串和要用(
    string.Empty
    )替换非笑脸字符的字符串。以下正则表达式字符串应该适合您:

    (((?<!:)[^:])|(:(?![PD\(\)])))[^:]*
    
    (?
    它由两部分组成:

  • ((?|
    (:(?![PD\(\)]))
  • [^:::*
  • 第一部分是使用的OR(
    |
    )语句。它通过查找以下任一项来查找不包含笑脸的文本块中的第一个字符:

    一个明显不是笑脸的角色:

  • 任何前面没有冒号的字符:
    (?)
  • 并且本身不是冒号:
    [^::
  • 或不后跟笑脸字符的冒号:

  • 冒号
  • 后面不是笑脸的后半部分:
    (?![PD\(\)])
  • 第二部分(
    [^::::]*
    )继续查找,直到找到一个可能的笑脸(冒号)的开头

    此正则表达式当前仅查找以下smiley:

    • :D
    • :P
    • :(
    • :)
    您可以更新OR语句的后半部分以查找其他笑脸


    总而言之,这个正则表达式应该找到所有不属于笑脸的字符。您只需在变量中声明它,然后调用,传入输入字符串和要用(
    string.Empty
    在本例中为空)替换非笑脸字符的字符串.

    你是不是在保留笑脸?笑脸是不是在输入字符串中唯一保留的东西?情绪…唯一重要的表达方式。你是不是在保留笑脸?笑脸是不是在输入字符串中唯一保留的东西?情绪…唯一重要的表达方式。