मुझे नहीं लगता कि इसके लिए कोई सीधा समर्थन है, लेकिन आप निश्चित रूप से सक्रिय पैटर्न लिख सकते हैं। सक्रिय पैटर्न आपको अपना कोड लागू करने की अनुमति देते हैं जो पैटर्न मिलान के हिस्से के रूप में चलाएगा और आप & मूल्य के कुछ हिस्से को निकाल सकते हैं।
निम्नलिखित एक पैटर्न है जो दो पैरामीटर (उपसर्ग और पोस्टफिक्स स्ट्रिंग) लेता है और यदि निर्दिष्ट इनपुट निर्दिष्ट स्ट्रिंग के साथ दिया गया इनपुट समाप्त होता है तो समाप्त होता है। पैटर्न पूरा नहीं हुआ है (असफल हो सकता है), इसलिए हम |Name|_|
सिंटैक्स का उपयोग करें और यह विकल्प मान देने के लिए की आवश्यकता होगी:
let (|Middle|_|) prefix postfix (input:string) =
// Check if the string starts with 'prefix', ends with 'postfix' and
// is longer than the two (meaning that it contains some middle part)
if input.StartsWith(prefix) && input.EndsWith(postfix) &&
input.Length >= (prefix.Length + postfix.Length) then
// Strip the prefix/postfix and return 'Some' to indicate success
let len = input.Length - prefix.Length - postfix.Length
Some(input.Substring(prefix.Length, len))
else None // Return 'None' - string doesn't match the pattern
अब हम पैटर्न में Middle
उपयोग कर सकते हैं मिलान (उदाहरण के लिए जब match
उपयोग करते हुए):
match "[aaa]" with
| Middle "[" "]" mid -> mid
| all -> all
स्रोत
2010-09-20 15:53:01
यह भी देखें http://stackoverflow.com/questions/3722591/pattern-matching-on-the-beginning- ऑफ-ए-स्ट्रिंग-इन-एफ – Brian