如何从字符串中删除应用的正则表达式并返回原始字符串。
我有字符串
12345679
在应用正则表达式后,我得到了字符串
" 123-456 + 789"
在我的代码中我有不同类型的正则表达式,我想找到哪个正则表达式与当前字符串匹配并将其转换回原始格式
我可以使用
找到正则表达式Regex.IsMatch()
但如何获得原始字符串?
这是一段代码
/// <summary>
/// Initializes a new instance of the <see cref="MainWindow"/> class.
/// </summary>
public MainWindow()
{
this.InitializeComponent();
this.patientIdPattern = @"^(\d{3})(\d{3})(\d{3})";
this.patientIdReplacement = "$1-$2+$3";
}
/// <summary>
/// Handles the OnLostFocus event of the UIElement control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.Windows.RoutedEventArgs"/> instance containing the event data.</param>
private void UIElement_OnLostFocus(object sender, RoutedEventArgs e)
{
string formatted = Regex.Replace(textBox.Text, this.patientIdPattern, this.patientIdReplacement);
lblFormatted.Content = formatted;
}
public void GetOriginalString(string formattedString)
{
//// Now here i want to convert formatted string back to original string.
}
答案 0 :(得分:1)
完整匹配始终位于MatchCollection
返回的Regex.Matches
的索引0处。
试试这个:
string fullMatch = "";
var matchCollection = Regex.Matches(originalText, regex);
foreach(var match in matchCollection)
{
fullMatch = match.Groups[0].Value;
break;
}
答案 1 :(得分:0)
除了自己保留原始输入之外,没有办法让Regex
返回原始输入。因为,取决于您如何使用它,Regex.Replace
可能是单向转换。您的选择是:
Regex.Replace("123-456+789", @"^(\d{3})\-(\d{3})\+(\d{3})", "$1$2$3")