s1~~s2~~… 或 StringExpression[s1,s2,…]
表示字符串和符号字符串对象 si 组成的一个序列.
StringExpression 
s1~~s2~~… 或 StringExpression[s1,s2,…]
表示字符串和符号字符串对象 si 组成的一个序列.
更多信息
- "str1"~~"str2"~~… 生成在 "stri" 中通过连接字符而获得的普通字符串.
- 以下对象可以出现在 StringExpression 中:
-
"string" 文字字符串 _ 任何单字符 __ 任何单个或多个字符 ___ 任何零个或个多字符 x_, x__, x___ x 给出的子串 x:pattern x 给出的模板 pattern.. 重复一或多次模板 pattern... 重复零或多次模板 {patt1,patt2,…} 或 patt1|patt2|… 匹配至少一个 patti 的模板 AnyOrder[patt1, patt2, …] 匹配任何顺序的所有 patti 的模式 FixedOrder[patt1, patt2, …] 匹配 patti 连接的模式 patt/;cond cond 为 True 的模板 pattern?test test 为每个字符生成 True 的模板 Whitespace 一组分隔符 NumberString 数字的字符 DatePattern[spec] 日期的字符 charobj 描述字符类的对象(如下) RegularExpression["regexp"] 匹配常规表达式的子串 StringExpression[…] 任意一个字符串表达式 - 以下描述字符的类:
-
{c1,c2,…} 任何 "ci" Characters["c1c2…"] 任何 "ci" CharacterRange["c1","c2"] 从 "c1" 到 "c2" 的范围内任何字符 HexadecimalCharacter 十六进制字符 0-9,a-f,A-F DigitCharacter 数字 0–9 LetterCharacter 字母 WhitespaceCharacter 空格、回车、制表符等分隔符 WordCharacter 字符或数字 Except[p] 除 p 外的任何字符 - 以下为可出现于字符串的位置:
-
StartOfString 字符串首部 EndOfString 字符串尾部 StartOfLine 行首 EndOfLine 行尾 WordBoundary 文字字符之间的边界线 Except[WordBoundary] 除边界线的任何位置 - 若存在诸如 __ 或 ..,StringExpression 可能有不同的匹配方式.
- 缺省情况下,Wolfram 语言使用在 StringExpression 中较早出现的匹配的最长子串的模式元素.
- 下面决定如果存在多种可能时,将使用何种匹配:
-
Shortest[p] p 的最短匹配 Longest[p] p 的最长匹配(缺省) - 匹配表达式而非字符串时,应用最短匹配.
- StringExpression 可用于如 StringReplace、StringCases、StringSplit 和 StringMatchQ 等字符串操作函数.
- StringExpression 的属性有 Flat 和 OneIdentity.
范例
打开所有单元 关闭所有单元基本范例 (2)
范围 (5)
StringReplace[{"ab", "abc", "abcd"}, "b" ~~ _ -> "X"]StringReplace[{"ab", "abc", "abcd"}, "b" ~~ __ -> "X"]StringReplace[{"ab", "abc", "abcd"}, "b" ~~ ___ -> "X"]使用 AnyOrder 以匹配任意顺序的模式:
StringMatchQ["4321", AnyOrder["1", "2", "3", "4"]]将匹配的 AnyOrder 赋予新变量将保持字符串中的顺序:
StringCases["1342 1432", a : AnyOrder["1", "2", "3", "4"] :> a]应用 (1)
FromDigits /@ Select[IntegerDigits /@ Array[Prime, 1000, 1000000], MatchQ[#, {___, x_, ___, x_, ___, x_, ___, x_, ___}]&]//Timing通过转换成字符串,可以使用 StringMatchQ:
FromDigits /@ Select[IntegerDigits /@ Array[Prime, 1000, 1000000], StringMatchQ[FromCharacterCode[48 + #], StringExpression[___, x_, ___, x_, ___, x_, ___, x_, ___]]&]//Timing属性和关系 (1)
StringExpression 对象可以用于许多字符串操作函数:
StringMatchQ["apppbb", "a" ~~ ___ ~~ "b"]StringFreeQ["bcde", "c" ~~ __ ~~ "t"]StringCount["abcadcadcbaac", "a" ~~ _ ~~ "c"]StringCases["a10b6a77a3a#", "a" ~~ DigitCharacter..]StringReplace["aa abcd", WordBoundary ~~ "aa" ~~ WordBoundary -> "XX"]StringReplaceList["abxxabxxabxxabxxab", _ ~~ "ab" ~~ _ -> "X"]StringPosition["abxxabxxabxxabxxab", _ ~~ "ab" ~~ _]StringReplacePart["abxxabxxabxxabxxab", "X", %]相关链接
历史
2004年引入 (5.1) | 在以下年份被更新:2007 (6.0) ▪ 2008 (7.0) ▪ 2014 (10.0)
文本
Wolfram Research (2004),StringExpression,Wolfram 语言函数,https://reference.wolfram.com/language/ref/StringExpression.html (更新于 2014 年).
CMS
Wolfram 语言. 2004. "StringExpression." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2014. https://reference.wolfram.com/language/ref/StringExpression.html.
APA
Wolfram 语言. (2004). StringExpression. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/StringExpression.html 年
BibTeX
@misc{reference.wolfram_2026_stringexpression, author="Wolfram Research", title="{StringExpression}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/StringExpression.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_stringexpression, organization={Wolfram Research}, title={StringExpression}, year={2014}, url={https://reference.wolfram.com/language/ref/StringExpression.html}, note=[Accessed: 03-November-2026]}