// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r#"(?m)=\s?.*(?:((?i)Fields\("(\w+)"\)\.Value\)*?))"#).unwrap();
let string = "Function lmpRoundedEndTime_ValueChanged(sender, e)
If CDbl(Fields(\"lmpShiftID\").Value) <> 0 And IsNull(Fields(\"lmpRoundedStartTime\").Value) = False And IsNull(Fields(\"lmpRoundedEndTime\").Value) = False Then
If CInt(App.Props(\"PN\").Fields(\"xapDCPayCalculationMethod\").Value) <> 2 Then
Fields(\"lmpPayrollHours\").Value = App.Ax(\"TimecardFunctions\").CalculateHours(Fields(\"lmpShiftID\").Value,Fields(\"lmpRoundedStartTime\").Value,Fields(\"lmpRoundedEndTime\").Value)
'''''''''''' ^ above should capture: lmpShiftID , lmpRoundedStartTime , lmpRoundedEndTime
End If
End If
End Function
Function TimecardLines_SetDefaultValues(sender, e)
Dim oRs,dTimecardDate
dTimecardDate = Null
Set oRs = CreateObject(\"ADODB.Recordset\")
oRs.Open \"select lmpEmployeeID,lmpShiftID,lmpTimecardDate,lmpProjectID from Timecards where lmpTimecardID = \" + App.Convert.NumberToSql(Fields(\"lmlTimecardID\").Value),Connection,adOpenStatic,adLockReadOnly,adCmdText
If oRs.EOF = False Then
Fields(\"lmlEmployeeID\").Value = oRs.Fields(\"lmpEmployeeID\").Value
Fields(\"lmlShiftID\").Value = oRs.Fields(\"lmpShiftID\").Value
Fields(\"lmlProjectID\").Value = oRs.Fields(\"lmpProjectID\").Value
dTimecardDate = oRs.Fields(\"lmpTimecardDate\").Value
End If
oRs.Close
oRs.Open \"select top 1 lmlRoundedEndTime From TimecardLines Where lmlTimecardID = \" + App.Convert.NumberToSql(Fields(\"lmlTimecardID\").Value) + \" Order By lmlRoundedEndTime Desc\",Connection,adOpenStatic,adLockReadOnly,adCmdText
If oRs.EOF = False Then
Fields(\"lmlRoundedStartTime\").Value = oRs.Fields(\"lmlRoundedEndTime\").Value
Else
Fields(\"lmlRoundedStartTime\").Value = App.Ax(\"Shift\").GetDayStartTime(Fields(\"lmlShiftID\").Value, dTimecardDate, e.SqlTransaction)
' Added to to fix -rounded end time is earlier than the rounded start time error when changing the labor hours
'Fields(\"lmlRoundedEndTime\").Value=Fields(\"lmlRoundedStartTime\").Value
End If
oRs.Close
If Trim(Fields(\"lmlEmployeeID\").Value) <> \"\" Then
oRs.Open \"select lmeDirectExpenseID,lmeIndirectExpenseID,lmeDefaultWorkCenterID from Employees where lmeEmployeeID = \" + App.Convert.StringToSql(Fields(\"lmlEmployeeID\").Value),Connection,adOpenStatic,adLockReadOnly,adCmdText
If oRs.EOF = False Then
If CInt(Fields(\"lmlTimecardType\").Value) = 1 Then
If Trim(oRs.Fields(\"lmeDirectExpenseID\").Value) <> \"\" Then
Fields(\"lmlExpenseID\").Value = oRs.Fields(\"lmeDirectExpenseID\").Value
End If
Else
If Trim(oRs.Fields(\"lmeIndirectExpenseID\").Value) <> \"\" Then
Fields(\"lmlExpenseID\").Value = oRs.Fields(\"lmeIndirectExpenseID\").Value
End If
End If
If CInt(Fields(\"lmlTimecardType\").Value) = 2 Then
If Trim(oRs.FIelds(\"lmeDefaultWorkCenterID\").Value) <> \"\" Then
Fields(\"lmlWorkCenterID\").Value = oRs.FIelds(\"lmeDefaultWorkCenterID\").Value
End If
End If
End If
oRs.Close
End If
End Function";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/