Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

Patterns

Guides

  • Guide
  • MainGuide

Tech Notes

  • Match & Replace

Symbols

  • MatchBindings
  • MatchParts
  • MultiwayReplace
  • NameValuePattern
  • PatternMatch
Wolfram`Patterns`
NameValuePattern
​
​
NameValuePattern[
a
1
,
a
2
,…,
a
n
,
b
1
:
def
1
,
b
2
:
def
2
,…,
b
n
:
def
n
]
makes a pattern for required arguments
a
1
,
a
2
,…,
a
n
and optional arguments
b
1
,
b
2
,…,
b
n
that can be supplied with rules
a
i

v
i
and
b
i

w
i
.
​
Details and Options

Examples  
(1)
Basic Examples  
(1)
Construct a name-value pattern with one unnamed argument and one named one:
In[1]:=
NameValuePattern
[a_,b_"defaultB"]
Out[1]=
PatternSequence[a:Except[_Rule,_],b:Except[_Rule,_]:defaultB]|PatternSequence[a:Except[_Rule,_],Optional[bb_:defaultB]]|OrderlessPatternSequence[Optional[bb_:defaultB],aa_]
Construct a name-value pattern with two unnamed and two named patterns:
In[2]:=
NameValuePattern
[a_,b_:"defaultB",c_"defaultC",d_"defaultD"]
Out[2]=
PatternSequence[a:Except[_Rule,_],b:Except[_Rule,_]:defaultB,c:Except[_Rule,_]:defaultC,d:Except[_Rule,_]:defaultD]|PatternSequence[a:Except[_Rule,_],b:Except[_Rule,_]:defaultB,c:Except[_Rule,_]:defaultC,Optional[dd_:defaultD]]|PatternSequence[a:Except[_Rule,_],b:Except[_Rule,_]:defaultB,OrderlessPatternSequence[Optional[cc_:defaultC],Optional[dd_:defaultD]]]|PatternSequence[a:Except[_Rule,_],OrderlessPatternSequence[Optional[bb_:defaultB],Optional[cc_:defaultC],Optional[dd_:defaultD]]]|OrderlessPatternSequence[Optional[bb_:defaultB],Optional[cc_:defaultC],Optional[dd_:defaultD],aa_]
All of the expressions here match the same pattern similarly, which is confirmed by
PatternMatchQ
and
MatchReplace
:
In[3]:=
args={{1,2,3,4},{1,2,c3},{1,2,d4},{1,2,d4,c3},{1,d4,b2},{b2,a1,d4}};
In[4]:=
PatternMatchQ

NameValuePattern
[a_,b_:20,c_30,d_40]/@args
Out[4]=
{True,True,True,True,True,True}
In[5]:=
MatchReplace
​​#,​​
NameValuePattern
[a_,b_:20,c_30,d_40]{a,b,c,d}​​&/@args
Out[5]=
{{1,2,3,4},{1,2,3,40},{1,2,30,4},{1,2,3,4},{1,2,30,4},{1,2,30,4}}
""

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com